src/HOL/Nominal/Examples/Compile.thy
author wenzelm
Tue, 21 Nov 2006 18:07:40 +0100
changeset 21442 56e54a2afe69
parent 21087 3e56528a39f7
child 21543 e855f25df0c8
permissions -rw-r--r--
simplified theorem(_i); notes: proper kind; renamed put_thms_internal to put_thms;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
     1
(* $Id$ *)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     2
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     3
(* A challenge suggested by Adam Chlipala *)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     4
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     5
theory Compile
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     6
imports "Nominal"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     7
begin
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     8
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
     9
atom_decl name 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    10
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    11
nominal_datatype data = DNat
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    12
                      | DProd "data" "data"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    13
                      | DSum "data" "data"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    14
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    15
nominal_datatype ty = Data "data"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    16
                    | Arrow "ty" "ty" ("_\<rightarrow>_" [100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    17
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    18
nominal_datatype trm = Var "name"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    19
                     | Lam "\<guillemotleft>name\<guillemotright>trm" ("Lam [_]._" [100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    20
                     | App "trm" "trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    21
                     | Const "nat"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    22
                     | Pr "trm" "trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    23
                     | Fst "trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    24
                     | Snd "trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    25
                     | InL "trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    26
                     | InR "trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    27
                     | Case "trm" "\<guillemotleft>name\<guillemotright>trm" "\<guillemotleft>name\<guillemotright>trm" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    28
                             ("Case _ of inl _ \<rightarrow> _ | inr _ \<rightarrow> _" [100,100,100,100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    29
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    30
nominal_datatype dataI = OneI | NatI
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    31
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    32
nominal_datatype tyI = DataI "dataI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    33
                     | ArrowI "tyI" "tyI" ("_\<rightarrow>_" [100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    34
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    35
nominal_datatype trmI = IVar "name"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    36
                      | ILam "\<guillemotleft>name\<guillemotright>trmI" ("ILam [_]._" [100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    37
                      | IApp "trmI" "trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    38
                      | IUnit
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    39
                      | INat "nat"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    40
                      | ISucc "trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    41
                      | IAss "trmI" "trmI" ("_\<mapsto>_" [100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    42
                      | IRef "trmI" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    43
                      | ISeq "trmI" "trmI" ("_;;_" [100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    44
                      | Iif "trmI" "trmI" "trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    45
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    46
text {* valid contexts *}
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    47
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    48
consts
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    49
  ctxts :: "((name\<times>'a::pt_name) list) set" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    50
  valid :: "(name\<times>'a::pt_name) list \<Rightarrow> bool"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    51
translations
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    52
  "valid \<Gamma>" \<rightleftharpoons> "\<Gamma> \<in> ctxts"  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    53
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    54
inductive ctxts
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    55
intros
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    56
v1[intro]: "valid []"
20955
65a9a30b8ece made some proof look more like the ones in Barendregt
urbanc
parents: 20606
diff changeset
    57
v2[intro]: "\<lbrakk>valid \<Gamma>;a\<sharp>\<Gamma>\<rbrakk>\<Longrightarrow> valid ((a,\<sigma>)#\<Gamma>)" (* maybe dom of \<Gamma> *)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    58
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    59
text {* typing judgements for trms *}
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    60
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    61
consts
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    62
  typing :: "(((name\<times>ty) list)\<times>trm\<times>ty) set" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    63
syntax
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    64
  "_typing_judge" :: "(name\<times>ty) list\<Rightarrow>trm\<Rightarrow>ty\<Rightarrow>bool" (" _ \<turnstile> _ : _ " [80,80,80] 80) 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    65
translations
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    66
  "\<Gamma> \<turnstile> t : \<tau>" \<rightleftharpoons> "(\<Gamma>,t,\<tau>) \<in> typing"  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    67
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    68
inductive typing
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    69
intros
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    70
t0[intro]: "\<lbrakk>valid \<Gamma>; (x,\<tau>)\<in>set \<Gamma>\<rbrakk>\<Longrightarrow> \<Gamma> \<turnstile> Var x : \<tau>"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    71
t1[intro]: "\<lbrakk>\<Gamma> \<turnstile> e1 : \<tau>1\<rightarrow>\<tau>2; \<Gamma> \<turnstile> e2 : \<tau>1\<rbrakk>\<Longrightarrow> \<Gamma> \<turnstile> App e1 e2 : \<tau>2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    72
t2[intro]: "\<lbrakk>x\<sharp>\<Gamma>;((x,\<tau>1)#\<Gamma>) \<turnstile> t : \<tau>2\<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> Lam [x].t : \<tau>1\<rightarrow>\<tau>2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    73
t3[intro]: "valid \<Gamma> \<Longrightarrow> \<Gamma> \<turnstile> Const n : Data(DNat)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    74
t4[intro]: "\<lbrakk>\<Gamma> \<turnstile> e1 : Data(\<sigma>1); \<Gamma> \<turnstile> e2 : Data(\<sigma>2)\<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> Pr e1 e2 : Data (DProd \<sigma>1 \<sigma>2)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    75
t5[intro]: "\<lbrakk>\<Gamma> \<turnstile> e : Data(DProd \<sigma>1 \<sigma>2)\<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> Fst e : Data(\<sigma>1)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    76
t6[intro]: "\<lbrakk>\<Gamma> \<turnstile> e : Data(DProd \<sigma>1 \<sigma>2)\<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> Snd e : Data(\<sigma>2)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    77
t7[intro]: "\<lbrakk>\<Gamma> \<turnstile> e : Data(\<sigma>1)\<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> InL e : Data(DSum \<sigma>1 \<sigma>2)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    78
t8[intro]: "\<lbrakk>\<Gamma> \<turnstile> e : Data(\<sigma>2)\<rbrakk> \<Longrightarrow> \<Gamma> \<turnstile> InR e : Data(DSum \<sigma>1 \<sigma>2)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    79
t9[intro]: "\<lbrakk>x1\<sharp>\<Gamma>; x2\<sharp>\<Gamma>; \<Gamma> \<turnstile> e: Data(DSum \<sigma>1 \<sigma>2); 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    80
             ((x1,Data(\<sigma>1))#\<Gamma>) \<turnstile> e1 : \<tau>; ((x2,Data(\<sigma>2))#\<Gamma>) \<turnstile> e2 : \<tau>\<rbrakk> 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    81
             \<Longrightarrow> \<Gamma> \<turnstile> (Case e of inl x1 \<rightarrow> e1 | inr x2 \<rightarrow> e2) : \<tau>"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    82
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    83
text {* typing judgements for Itrms *}
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    84
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    85
consts
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    86
  Ityping :: "(((name\<times>tyI) list)\<times>trmI\<times>tyI) set" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    87
syntax
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    88
  "_typing_judge" :: "(name\<times>tyI) list\<Rightarrow>trmI\<Rightarrow>tyI\<Rightarrow>bool" (" _ I\<turnstile> _ : _ " [80,80,80] 80) 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    89
translations
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    90
  "\<Gamma> I\<turnstile> t : \<tau>" \<rightleftharpoons> "(\<Gamma>,t,\<tau>) \<in> Ityping"  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    91
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    92
inductive Ityping
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    93
intros
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    94
t0[intro]: "\<lbrakk>valid \<Gamma>; (x,\<tau>)\<in>set \<Gamma>\<rbrakk>\<Longrightarrow> \<Gamma> I\<turnstile> IVar x : \<tau>"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    95
t1[intro]: "\<lbrakk>\<Gamma> I\<turnstile> e1 : \<tau>1\<rightarrow>\<tau>2; \<Gamma> I\<turnstile> e2 : \<tau>1\<rbrakk>\<Longrightarrow> \<Gamma> I\<turnstile> IApp e1 e2 : \<tau>2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    96
t2[intro]: "\<lbrakk>x\<sharp>\<Gamma>;((x,\<tau>1)#\<Gamma>) I\<turnstile> t : \<tau>2\<rbrakk> \<Longrightarrow> \<Gamma> I\<turnstile> ILam [x].t : \<tau>1\<rightarrow>\<tau>2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    97
t3[intro]: "valid \<Gamma> \<Longrightarrow> \<Gamma> I\<turnstile> IUnit : DataI(OneI)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    98
t4[intro]: "valid \<Gamma> \<Longrightarrow> \<Gamma> I\<turnstile> INat(n) : DataI(NatI)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
    99
t5[intro]: "\<Gamma> I\<turnstile> e : DataI(NatI) \<Longrightarrow> \<Gamma> I\<turnstile> ISucc(e) : DataI(NatI)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   100
t6[intro]: "\<lbrakk>\<Gamma> I\<turnstile> e : DataI(NatI)\<rbrakk> \<Longrightarrow> \<Gamma> I\<turnstile> IRef e : DataI (NatI)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   101
t7[intro]: "\<lbrakk>\<Gamma> I\<turnstile> e1 : DataI(NatI); \<Gamma> I\<turnstile> e2 : DataI(NatI)\<rbrakk> \<Longrightarrow> \<Gamma> I\<turnstile> e1\<mapsto>e2 : DataI(OneI)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   102
t8[intro]: "\<lbrakk>\<Gamma> I\<turnstile> e1 : DataI(NatI); \<Gamma> I\<turnstile> e2 : \<tau>\<rbrakk> \<Longrightarrow> \<Gamma> I\<turnstile> e1;;e2 : \<tau>"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   103
t9[intro]: "\<lbrakk>\<Gamma> I\<turnstile> e: DataI(NatI); \<Gamma> I\<turnstile> e1 : \<tau>; \<Gamma> I\<turnstile> e2 : \<tau>\<rbrakk> \<Longrightarrow> \<Gamma> I\<turnstile> Iif e e1 e2 : \<tau>"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   104
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   105
text {* capture-avoiding substitution *}
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   106
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   107
consts
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   108
 subst :: "'a \<Rightarrow> name \<Rightarrow> 'a \<Rightarrow> 'a"  ("_[_::=_]" [100,100,100] 100)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   109
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   110
constdefs 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   111
  subst_Var :: "name \<Rightarrow> trm \<Rightarrow> name \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   112
  "subst_Var x t' \<equiv> \<lambda>y. (if y=x then t' else (Var y))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   113
  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   114
  subst_App :: "name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   115
  "subst_App x t' \<equiv> \<lambda>_ _ r1 r2. App r1 r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   116
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   117
  subst_Lam :: "name \<Rightarrow> trm \<Rightarrow> name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   118
  "subst_Lam x t' \<equiv> \<lambda>a _ r. Lam [a].r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   119
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   120
  subst_Const :: "name \<Rightarrow> trm \<Rightarrow> nat \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   121
  "subst_Const x t' \<equiv> \<lambda>n. Const n"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   122
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   123
  subst_Pr :: "name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   124
  "subst_Pr x t' \<equiv> \<lambda>_ _ r1 r2. Pr r1 r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   125
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   126
  subst_Fst :: "name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   127
  "subst_Fst x t' \<equiv> \<lambda>_ r. Fst r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   128
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   129
  subst_Snd :: "name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   130
  "subst_Snd x t' \<equiv> \<lambda>_ r. Snd r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   131
 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   132
  subst_InL :: "name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   133
  "subst_InL x t' \<equiv> \<lambda>_ r. InL r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   134
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   135
  subst_InR :: "name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   136
  "subst_InR x t' \<equiv> \<lambda>_ r. InR r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   137
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   138
  subst_Case :: "name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> name \<Rightarrow> trm \<Rightarrow> name \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm \<Rightarrow> trm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   139
  "subst_Case x t' \<equiv> \<lambda>_ x _ y _ r r1 r2. Case r of inl x \<rightarrow> r1 | inr y \<rightarrow> r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   140
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   141
defs(overloaded)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   142
  subst_def: 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   143
    "t[x::=t'] \<equiv> trm_rec (subst_Var x t') (subst_Lam x t') (subst_App x t')
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   144
                        (subst_Const x t') (subst_Pr x t') (subst_Fst x t') (subst_Snd x t')
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   145
                         (subst_InL x t') (subst_InR x t') (subst_Case x t') t"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   146
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   147
(* FIXME: the next two lemmas need to be in Nominal.thy *)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   148
lemma perm_if:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   149
  fixes pi::"'a prm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   150
  shows "pi\<bullet>(if b then c1 else c2) = (if (pi\<bullet>b) then (pi\<bullet>c1) else (pi\<bullet>c2))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   151
apply(simp add: perm_fun_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   152
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   153
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   154
lemma eq_eqvt:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   155
  fixes pi::"name prm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   156
  and   x::"'a::pt_name"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   157
  shows "pi\<bullet>(x=y) = ((pi\<bullet>x)=(pi\<bullet>y))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   158
  apply(simp add: perm_bool perm_bij)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   159
  done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   160
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   161
lemma fin_supp_subst:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   162
  shows "finite ((supp (subst_Var x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   163
  and   "finite ((supp (subst_Lam x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   164
  and   "finite ((supp (subst_App x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   165
  and   "finite ((supp (subst_Const x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   166
  and   "finite ((supp (subst_Pr x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   167
  and   "finite ((supp (subst_Fst x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   168
  and   "finite ((supp (subst_Snd x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   169
  and   "finite ((supp (subst_InL x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   170
  and   "finite ((supp (subst_InR x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   171
  and   "finite ((supp (subst_Case x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   172
apply -
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   173
apply(finite_guess add: fs_name1 subst_Var_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   174
apply(finite_guess add: fs_name1 subst_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   175
apply(finite_guess add: fs_name1 subst_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   176
apply(finite_guess add: fs_name1 subst_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   177
apply(finite_guess add: fs_name1 subst_Pr_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   178
apply(finite_guess add: fs_name1 subst_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   179
apply(finite_guess add: fs_name1 subst_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   180
apply(finite_guess add: fs_name1 subst_InL_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   181
apply(finite_guess add: fs_name1 subst_InR_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   182
apply(finite_guess only: fs_name1 subst_Case_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   183
apply(perm_simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   184
apply(simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   185
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   186
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   187
lemma fcb_subst_Lam:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   188
  shows "x\<sharp>(subst_Lam y t') x t r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   189
  by (simp add: subst_Lam_def abs_fresh)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   190
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   191
lemma fcb_subst_Case:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   192
  assumes a: "x\<sharp>r" "x\<sharp>r2" "y\<sharp>r" "y\<sharp>r1"
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   193
  shows "x\<sharp>(subst_Case z t') e x e1 y e2 r r1 r2"
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   194
  and "y\<sharp>(subst_Case z t') e x e1 y e2 r r1 r2"
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   195
  using a
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   196
  by (simp_all add: subst_Case_def abs_fresh)
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   197
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   198
lemmas trm_recs = trm.recs[where P="\<lambda>_. True", simplified]
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   199
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   200
lemma subst:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   201
  shows "(Var x)[y::=t'] = (if x=y then t' else (Var x))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   202
  and   "(App t1 t2)[y::=t'] = App (t1[y::=t']) (t2[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   203
  and   "\<lbrakk>x\<sharp>y; x\<sharp>t'\<rbrakk> \<Longrightarrow> (Lam [x].t)[y::=t'] = Lam [x].(t[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   204
  and   "(Const n)[y::=t'] = Const n"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   205
  and   "(Pr e1 e2)[y::=t'] = Pr (e1[y::=t']) (e2[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   206
  and   "(Fst e)[y::=t'] = Fst (e[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   207
  and   "(Snd e)[y::=t'] = Snd (e[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   208
  and   "(InL e)[y::=t'] = InL (e[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   209
  and   "(InR e)[y::=t'] = InR (e[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   210
  and   "\<lbrakk>z\<noteq>x; x\<sharp>y; x\<sharp>e; x\<sharp>e2; z\<sharp>y; z\<sharp>e; z\<sharp>e1; x\<sharp>t'; z\<sharp>t'\<rbrakk> 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   211
         \<Longrightarrow> (Case e of inl x \<rightarrow> e1 | inr z \<rightarrow> e2)[y::=t'] =
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   212
                                    (Case (e[y::=t']) of inl x \<rightarrow> (e1[y::=t']) | inr z \<rightarrow> (e2[y::=t']))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   213
apply(unfold subst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   214
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   215
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   216
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   217
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   218
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   219
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   220
apply(simp add: subst_Var_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   221
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   222
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   223
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   224
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   225
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   226
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   227
apply(simp add: subst_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   228
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   229
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   230
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   231
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   232
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   233
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   234
apply(fresh_guess add: fs_name1 subst_Var_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   235
apply(fresh_guess add: fs_name1 subst_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   236
apply(fresh_guess add: fs_name1 subst_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   237
apply(fresh_guess add: fs_name1 subst_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   238
apply(fresh_guess add: fs_name1 subst_Pr_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   239
apply(fresh_guess add: fs_name1 subst_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   240
apply(fresh_guess add: fs_name1 subst_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   241
apply(fresh_guess add: fs_name1 subst_InL_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   242
apply(fresh_guess add: fs_name1 subst_InR_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   243
apply(fresh_guess only: fs_name1 subst_Case_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   244
apply(perm_simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   245
apply(simp, simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   246
apply(simp add: subst_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   247
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   248
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   249
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   250
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   251
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   252
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   253
apply(simp add: subst_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   254
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   255
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   256
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   257
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   258
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   259
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   260
apply(simp add: subst_Pr_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   261
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   262
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   263
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   264
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   265
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   266
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   267
apply(simp add: subst_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   268
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   269
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   270
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   271
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   272
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   273
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   274
apply(simp add: subst_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   275
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   276
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   277
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   278
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   279
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   280
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   281
apply(simp add: subst_InL_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   282
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   283
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   284
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   285
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   286
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   287
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   288
apply(simp add: subst_InR_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   289
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   290
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   291
apply(rule fin_supp_subst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   292
apply(simp add: fcb_subst_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   293
apply(simp add: fcb_subst_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   294
apply(simp add: fcb_subst_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   295
apply(fresh_guess add: fs_name1 subst_Var_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   296
apply(fresh_guess add: fs_name1 subst_Var_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   297
apply(fresh_guess add: fs_name1 subst_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   298
apply(fresh_guess add: fs_name1 subst_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   299
apply(fresh_guess add: fs_name1 subst_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   300
apply(fresh_guess add: fs_name1 subst_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   301
apply(fresh_guess add: fs_name1 subst_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   302
apply(fresh_guess add: fs_name1 subst_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   303
apply(fresh_guess add: fs_name1 subst_Pr_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   304
apply(fresh_guess add: fs_name1 subst_Pr_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   305
apply(fresh_guess add: fs_name1 subst_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   306
apply(fresh_guess add: fs_name1 subst_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   307
apply(fresh_guess add: fs_name1 subst_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   308
apply(fresh_guess add: fs_name1 subst_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   309
apply(fresh_guess add: fs_name1 subst_InL_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   310
apply(fresh_guess add: fs_name1 subst_InL_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   311
apply(fresh_guess add: fs_name1 subst_InR_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   312
apply(fresh_guess add: fs_name1 subst_InR_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   313
apply(fresh_guess only: fs_name1 subst_Case_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   314
apply(perm_simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   315
apply(simp, simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   316
apply(fresh_guess only: fs_name1 subst_Case_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   317
apply(perm_simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   318
apply(simp, simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   319
apply(assumption)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   320
apply(simp add: subst_Case_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   321
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   322
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   323
constdefs 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   324
  subst_IVar :: "name \<Rightarrow> trmI \<Rightarrow> name \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   325
  "subst_IVar x t' \<equiv> \<lambda>y. (if y=x then t' else (IVar y))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   326
  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   327
  subst_IApp :: "name \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   328
  "subst_IApp x t' \<equiv> \<lambda>_ _ r1 r2. IApp r1 r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   329
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   330
  subst_ILam :: "name \<Rightarrow> trmI \<Rightarrow> name \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   331
  "subst_ILam x t' \<equiv> \<lambda>a _ r. ILam [a].r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   332
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   333
  subst_IUnit :: "name \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   334
  "subst_IUnit x t' \<equiv> IUnit"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   335
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   336
  subst_INat :: "name \<Rightarrow> trmI \<Rightarrow> nat \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   337
  "subst_INat x t' \<equiv> \<lambda>n. INat n"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   338
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   339
  subst_ISucc :: "name \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   340
  "subst_ISucc x t' \<equiv> \<lambda>_ r. ISucc r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   341
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   342
  subst_IAss :: "name \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   343
  "subst_IAss x t' \<equiv> \<lambda>_ _ r1 r2. r1\<mapsto>r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   344
 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   345
  subst_IRef :: "name \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   346
  "subst_IRef x t' \<equiv> \<lambda>_ r. IRef r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   347
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   348
  subst_ISeq :: "name \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   349
  "subst_ISeq x t' \<equiv> \<lambda>_ _ r1 r2. ISeq r1 r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   350
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   351
  subst_Iif :: "name \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   352
  "subst_Iif x t' \<equiv> \<lambda>_ _ _ r r1 r2. Iif r r1 r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   353
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   354
defs(overloaded)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   355
  subst_trmI_def: 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   356
    "t[x::=t'] \<equiv> trmI_rec (subst_IVar x t') (subst_ILam x t') (subst_IApp x t')
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   357
                        (subst_IUnit x t') (subst_INat x t') (subst_ISucc x t') (subst_IAss x t')
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   358
                         (subst_IRef x t') (subst_ISeq x t') (subst_Iif x t') t"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   359
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   360
lemma fin_supp_Isubst:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   361
  shows "finite ((supp (subst_IVar x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   362
  and   "finite ((supp (subst_ILam x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   363
  and   "finite ((supp (subst_IApp x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   364
  and   "finite ((supp (subst_INat x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   365
  and   "finite ((supp (subst_IUnit x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   366
  and   "finite ((supp (subst_ISucc x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   367
  and   "finite ((supp (subst_IAss x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   368
  and   "finite ((supp (subst_IRef x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   369
  and   "finite ((supp (subst_ISeq x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   370
  and   "finite ((supp (subst_Iif x t))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   371
apply -
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   372
apply(finite_guess add: fs_name1 subst_IVar_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   373
apply(finite_guess add: fs_name1 subst_ILam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   374
apply(finite_guess add: fs_name1 subst_IApp_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   375
apply(finite_guess add: fs_name1 subst_INat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   376
apply(finite_guess add: fs_name1 subst_IUnit_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   377
apply(finite_guess add: fs_name1 subst_ISucc_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   378
apply(finite_guess add: fs_name1 subst_IAss_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   379
apply(finite_guess add: fs_name1 subst_IRef_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   380
apply(finite_guess add: fs_name1 subst_ISeq_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   381
apply(finite_guess only: fs_name1 subst_Iif_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   382
apply(perm_simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   383
apply(simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   384
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   385
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   386
lemma fcb_subst_ILam:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   387
  shows "x\<sharp>(subst_ILam y t') x t r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   388
  by (simp add: subst_ILam_def abs_fresh)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   389
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   390
lemmas trmI_recs = trmI.recs[where P="\<lambda>_. True", simplified]
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   391
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   392
lemma Isubst:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   393
  shows "(IVar x)[y::=t'] = (if x=y then t' else (IVar x))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   394
  and   "(IApp t1 t2)[y::=t'] = IApp (t1[y::=t']) (t2[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   395
  and   "\<lbrakk>x\<sharp>y; x\<sharp>t'\<rbrakk> \<Longrightarrow> (ILam [x].t)[y::=t'] = ILam [x].(t[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   396
  and   "(INat n)[y::=t'] = INat n"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   397
  and   "(IUnit)[y::=t'] = IUnit"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   398
  and   "(ISucc e)[y::=t'] = ISucc (e[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   399
  and   "(IAss e1 e2)[y::=t'] = IAss (e1[y::=t']) (e2[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   400
  and   "(IRef e)[y::=t'] = IRef (e[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   401
  and   "(ISeq e1 e2)[y::=t'] = ISeq (e1[y::=t']) (e2[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   402
  and   "(Iif e e1 e2)[y::=t'] = Iif (e[y::=t']) (e1[y::=t']) (e2[y::=t'])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   403
apply(unfold subst_trmI_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   404
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   405
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   406
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   407
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   408
apply(simp add: subst_IVar_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   409
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   410
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   411
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   412
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   413
apply(simp add: subst_IApp_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   414
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   415
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   416
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   417
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   418
apply(fresh_guess add: fs_name1 subst_IVar_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   419
apply(fresh_guess add: fs_name1 subst_ILam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   420
apply(fresh_guess add: fs_name1 subst_IApp_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   421
apply(fresh_guess add: fs_name1 subst_IUnit_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   422
apply(fresh_guess add: fs_name1 subst_INat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   423
apply(fresh_guess add: fs_name1 subst_ISucc_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   424
apply(fresh_guess add: fs_name1 subst_IAss_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   425
apply(fresh_guess add: fs_name1 subst_IRef_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   426
apply(fresh_guess add: fs_name1 subst_ISeq_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   427
apply(fresh_guess only: fs_name1 subst_Iif_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   428
apply(perm_simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   429
apply(simp, simp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   430
apply(simp add: subst_ILam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   431
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   432
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   433
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   434
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   435
apply(simp add: subst_INat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   436
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   437
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   438
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   439
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   440
apply(simp add: subst_IUnit_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   441
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   442
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   443
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   444
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   445
apply(simp add: subst_ISucc_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   446
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   447
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   448
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   449
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   450
apply(simp add: subst_IAss_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   451
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   452
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   453
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   454
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   455
apply(simp add: subst_IRef_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   456
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   457
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   458
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   459
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   460
apply(simp add: subst_ISeq_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   461
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   462
apply(rule trmI_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   463
apply(rule fin_supp_Isubst)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   464
apply(simp add: fcb_subst_ILam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   465
apply(simp add: subst_Iif_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   466
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   467
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   468
lemma Isubst_eqvt:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   469
  fixes pi::"name prm"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   470
  and   t1::"trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   471
  and   t2::"trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   472
  and   x::"name"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   473
  shows "pi\<bullet>(t1[x::=t2]) = ((pi\<bullet>t1)[(pi\<bullet>x)::=(pi\<bullet>t2)])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   474
  apply(nominal_induct t1 avoiding: x t2 rule: trmI.induct)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   475
  apply(simp_all add: Isubst perm_if eq_eqvt fresh_bij)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   476
  done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   477
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   478
lemma Isubst_supp:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   479
  fixes t1::"trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   480
  and   t2::"trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   481
  and   x::"name"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   482
  shows "((supp (t1[x::=t2]))::name set) \<subseteq> (supp t2)\<union>((supp t1)-{x})"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   483
apply(nominal_induct t1 avoiding: x t2 rule: trmI.induct)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   484
apply(auto simp add: Isubst trmI.supp supp_atm abs_supp supp_nat)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   485
apply(blast)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   486
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   487
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   488
lemma Isubst_fresh:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   489
  fixes x::"name"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   490
  and   y::"name"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   491
  and   t1::"trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   492
  and   t2::"trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   493
  assumes a: "x\<sharp>[y].t1" "x\<sharp>t2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   494
  shows "x\<sharp>(t1[y::=t2])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   495
using a
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   496
apply(auto simp add: fresh_def Isubst_supp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   497
apply(drule rev_subsetD)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   498
apply(rule Isubst_supp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   499
apply(simp add: abs_supp)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   500
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   501
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   502
text {* big-step evaluation for trms *}
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   503
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   504
consts
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   505
  big :: "(trm\<times>trm) set" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   506
syntax
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   507
  "_big_judge" :: "trm\<Rightarrow>trm\<Rightarrow>bool" ("_ \<Down> _" [80,80] 80) 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   508
translations
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   509
  "e1 \<Down> e2" \<rightleftharpoons> "(e1,e2) \<in> big"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   510
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   511
inductive big
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   512
intros
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   513
b0[intro]: "Lam [x].e \<Down> Lam [x].e"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   514
b1[intro]: "\<lbrakk>e1\<Down>Lam [x].e; e2\<Down>e2'; e[x::=e2']\<Down>e'\<rbrakk> \<Longrightarrow> App e1 e2 \<Down> e'"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   515
b2[intro]: "Const n \<Down> Const n"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   516
b3[intro]: "\<lbrakk>e1\<Down>e1'; e2\<Down>e2'\<rbrakk> \<Longrightarrow> Pr e1 e2 \<Down> Pr e1' e2'"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   517
b4[intro]: "e\<Down>Pr e1 e2 \<Longrightarrow> Fst e\<Down>e1"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   518
b5[intro]: "e\<Down>Pr e1 e2 \<Longrightarrow> Snd e\<Down>e2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   519
b6[intro]: "e\<Down>e' \<Longrightarrow> InL e \<Down> InL e'"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   520
b7[intro]: "e\<Down>e' \<Longrightarrow> InR e \<Down> InR e'"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   521
b8[intro]: "\<lbrakk>e\<Down>InL e'; e1[x::=e']\<Down>e''\<rbrakk> \<Longrightarrow> Case e of inl x1 \<rightarrow> e1 | inr x2 \<rightarrow> e2 \<Down> e''"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   522
b9[intro]: "\<lbrakk>e\<Down>InR e'; e2[x::=e']\<Down>e''\<rbrakk> \<Longrightarrow> Case e of inl x1 \<rightarrow> e1 | inr x2 \<rightarrow> e2 \<Down> e''"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   523
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   524
consts
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   525
  Ibig :: "(((nat\<Rightarrow>nat)\<times>trmI)\<times>((nat\<Rightarrow>nat)\<times>trmI)) set" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   526
syntax
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   527
  "_Ibig_judge" :: "((nat\<Rightarrow>nat)\<times>trmI)\<Rightarrow>((nat\<Rightarrow>nat)\<times>trmI)\<Rightarrow>bool" ("_ I\<Down> _" [80,80] 80) 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   528
translations
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   529
  "(m,e1) I\<Down> (m',e2)" \<rightleftharpoons> "((m,e1),(m',e2)) \<in> Ibig"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   530
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   531
inductive Ibig
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   532
intros
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   533
m0[intro]: "(m,ILam [x].e) I\<Down> (m,ILam [x].e)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   534
m1[intro]: "\<lbrakk>(m,e1)I\<Down>(m',ILam [x].e); (m',e2)I\<Down>(m'',e3); (m'',e[x::=e3])I\<Down>(m''',e4)\<rbrakk> 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   535
            \<Longrightarrow> (m,IApp e1 e2) I\<Down> (m''',e4)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   536
m2[intro]: "(m,IUnit) I\<Down> (m,IUnit)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   537
m3[intro]: "(m,INat(n))I\<Down>(m,INat(n))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   538
m4[intro]: "(m,e)I\<Down>(m',INat(n)) \<Longrightarrow> (m,ISucc(e))I\<Down>(m',INat(n+1))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   539
m5[intro]: "(m,e)I\<Down>(m',INat(n)) \<Longrightarrow> (m,IRef(e))I\<Down>(m',INat(m' n))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   540
m6[intro]: "\<lbrakk>(m,e1)I\<Down>(m',INat(n1)); (m',e2)I\<Down>(m'',INat(n2))\<rbrakk> \<Longrightarrow> (m,e1\<mapsto>e2)I\<Down>(m''(n1:=n2),IUnit)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   541
m7[intro]: "\<lbrakk>(m,e1)I\<Down>(m',IUnit); (m',e2)I\<Down>(m'',e)\<rbrakk> \<Longrightarrow> (m,e1;;e2)I\<Down>(m'',e)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   542
m8[intro]: "\<lbrakk>(m,e)I\<Down>(m',INat(n)); n\<noteq>0; (m',e1)I\<Down>(m'',e)\<rbrakk> \<Longrightarrow> (m,Iif e e1 e2)I\<Down>(m'',e)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   543
m9[intro]: "\<lbrakk>(m,e)I\<Down>(m',INat(0)); (m',e2)I\<Down>(m'',e)\<rbrakk> \<Longrightarrow> (m,Iif e e1 e2)I\<Down>(m'',e)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   544
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   545
text {* Translation functions *}
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   546
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   547
constdefs 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   548
  trans_data :: "data \<Rightarrow> tyI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   549
  "trans_data \<equiv> \<lambda>_. DataI(NatI)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   550
  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   551
  trans_arrow :: "ty \<Rightarrow> ty \<Rightarrow> tyI \<Rightarrow> tyI \<Rightarrow> tyI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   552
  "trans_arrow \<equiv> \<lambda>_ _ r1 r2. ArrowI r1 r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   553
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   554
  trans_type::"ty \<Rightarrow> tyI"  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   555
  "trans_type \<tau> \<equiv> ty_rec (trans_data) (trans_arrow) \<tau>"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   556
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   557
lemmas ty_recs = ty.recs[where P="\<lambda>_. True", simplified]
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   558
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   559
lemma trans_type:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   560
  shows "trans_type (Data \<sigma>) = DataI(NatI)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   561
  and   "trans_type (\<tau>1\<rightarrow>\<tau>2) = (trans_type \<tau>1)\<rightarrow>(trans_type \<tau>2)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   562
apply(unfold trans_type_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   563
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   564
apply(rule ty_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   565
apply(simp add: trans_data_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   566
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   567
apply(rule ty_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   568
apply(simp add: trans_arrow_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   569
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   570
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   571
constdefs 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   572
  trans_Var :: "name \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   573
  "trans_Var \<equiv> \<lambda>x. IVar x"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   574
  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   575
  trans_App :: "trm \<Rightarrow> trm \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   576
  "trans_App \<equiv> \<lambda>_ _ r1 r2. IApp r1 r2"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   577
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   578
  trans_Lam :: "name \<Rightarrow> trm \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   579
  "trans_Lam \<equiv> \<lambda>a _ r. ILam [a].r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   580
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   581
  trans_Const :: "nat \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   582
  "trans_Const \<equiv> \<lambda>n. INat n"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   583
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   584
  trans_Pr :: "trm \<Rightarrow> trm \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   585
  "trans_Pr \<equiv> \<lambda>_ _ r1 r2. 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   586
         let limit = IRef(INat 0) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   587
         let v1 = r1 in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   588
         let v2 = r2 in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   589
         (((ISucc limit)\<mapsto>v1);;(ISucc(ISucc limit)\<mapsto>v2));;(INat 0 \<mapsto> ISucc(ISucc(limit)))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   590
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   591
  trans_Fst :: "trm \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   592
  "trans_Fst \<equiv> \<lambda>_ r. IRef (ISucc r)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   593
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   594
  trans_Snd :: "trm \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   595
  "trans_Snd \<equiv> \<lambda>_ r. IRef (ISucc (ISucc r))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   596
 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   597
  trans_InL :: "trm \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   598
  "trans_InL \<equiv> \<lambda>_ r. 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   599
         let limit = IRef(INat 0) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   600
         let v = r in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   601
         (((ISucc limit)\<mapsto>INat(0));;(ISucc(ISucc limit)\<mapsto>v));;(INat 0 \<mapsto> ISucc(ISucc(limit)))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   602
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   603
  trans_InR :: "trm \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   604
  "trans_InR \<equiv> \<lambda>_ r. 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   605
         let limit = IRef(INat 0) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   606
         let v = r in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   607
         (((ISucc limit)\<mapsto>INat(1));;(ISucc(ISucc limit)\<mapsto>v));;(INat 0 \<mapsto> ISucc(ISucc(limit)))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   608
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   609
  trans_Case :: "trm \<Rightarrow> name \<Rightarrow> trm \<Rightarrow> name \<Rightarrow> trm \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI \<Rightarrow> trmI"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   610
  "trans_Case \<equiv> \<lambda>_ x1 _ x2 _ r r1 r2. 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   611
         let v = r in
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   612
         let v1 = r1 in
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   613
         let v2 = r2 in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   614
         Iif (IRef (ISucc v)) (v2[x2::=IRef (ISucc (ISucc v))]) (v1[x1::=IRef (ISucc (ISucc v))])"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   615
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   616
  trans :: "trm \<Rightarrow> trmI" 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   617
    "trans t \<equiv> trm_rec (trans_Var) (trans_Lam) (trans_App)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   618
                           (trans_Const) (trans_Pr) (trans_Fst) (trans_Snd)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   619
                           (trans_InL) (trans_InR) (trans_Case) t"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   620
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   621
lemma fin_supp_trans:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   622
  shows "finite ((supp (trans_Var))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   623
  and   "finite ((supp (trans_Lam))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   624
  and   "finite ((supp (trans_App))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   625
  and   "finite ((supp (trans_Const))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   626
  and   "finite ((supp (trans_Pr))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   627
  and   "finite ((supp (trans_Fst))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   628
  and   "finite ((supp (trans_Snd))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   629
  and   "finite ((supp (trans_InL))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   630
  and   "finite ((supp (trans_InR))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   631
  and   "finite ((supp (trans_Case))::name set)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   632
apply -
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   633
apply(finite_guess add: fs_name1 trans_Var_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   634
apply(finite_guess add: fs_name1 trans_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   635
apply(finite_guess add: fs_name1 trans_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   636
apply(finite_guess add: fs_name1 trans_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   637
apply(finite_guess add: fs_name1 trans_Pr_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   638
apply(finite_guess add: fs_name1 trans_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   639
apply(finite_guess add: fs_name1 trans_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   640
apply(finite_guess add: fs_name1 trans_InL_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   641
apply(finite_guess add: fs_name1 trans_InR_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   642
apply(finite_guess add: fs_name1 trans_Case_def Let_def Isubst_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   643
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   644
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   645
lemma fcb_trans_Lam:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   646
  shows "x\<sharp>(trans_Lam) x t r"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   647
  by (simp add: trans_Lam_def abs_fresh)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   648
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   649
lemma fcb_trans_Case:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   650
  assumes a: "x\<sharp>r" "x\<sharp>r2" "y\<sharp>r" "y\<sharp>r1"
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   651
  shows "x\<sharp>(trans_Case) e x e1 y e2 r r1 r2"
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   652
  and "y\<sharp>(trans_Case) e x e1 y e2 r r1 r2"
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   653
  using a
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   654
  by (simp_all add: trans_Case_def abs_fresh Isubst_fresh)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   655
  
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   656
lemma trans:
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   657
  shows "trans (Var x) = (IVar x)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   658
  and   "trans (App e1 e2) = IApp (trans e1) (trans e2)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   659
  and   "trans (Lam [x].e) = ILam [x].(trans e)"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   660
  and   "trans (Const n) = INat n"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   661
  and   "trans (Pr e1 e2) = 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   662
             (let limit = IRef(INat 0) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   663
              let v1 = (trans e1) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   664
              let v2 = (trans e2) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   665
              (((ISucc limit)\<mapsto>v1);;(ISucc(ISucc limit)\<mapsto>v2));;(INat 0 \<mapsto> ISucc(ISucc(limit))))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   666
  and   "trans (Fst e) = IRef (ISucc (trans e))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   667
  and   "trans (Snd e) = IRef (ISucc (ISucc (trans e)))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   668
  and   "trans (InL e) = 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   669
              (let limit = IRef(INat 0) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   670
               let v = (trans e) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   671
               (((ISucc limit)\<mapsto>INat(0));;(ISucc(ISucc limit)\<mapsto>v));;(INat 0 \<mapsto> ISucc(ISucc(limit))))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   672
  and   "trans (InR e) = 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   673
              (let limit = IRef(INat 0) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   674
               let v = (trans e) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   675
               (((ISucc limit)\<mapsto>INat(1));;(ISucc(ISucc limit)\<mapsto>v));;(INat 0 \<mapsto> ISucc(ISucc(limit))))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   676
  and   "\<lbrakk>x2\<noteq>x1; x1\<sharp>e; x1\<sharp>e2; x2\<sharp>e; x2\<sharp>e1\<rbrakk> \<Longrightarrow> 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   677
         trans (Case e of inl x1 \<rightarrow> e1 | inr x2 \<rightarrow> e2) =
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   678
             (let v = (trans e) in
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   679
              let v1 = (trans e1) in
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   680
              let v2 = (trans e2) in 
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   681
              Iif (IRef (ISucc v)) (v2[x2::=IRef (ISucc (ISucc v))]) (v1[x1::=IRef (ISucc (ISucc v))]))"
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   682
apply(unfold trans_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   683
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   684
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   685
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   686
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   687
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   688
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   689
apply(simp add: trans_Var_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   690
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   691
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   692
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   693
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   694
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   695
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   696
apply(simp add: trans_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   697
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   698
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   699
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   700
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   701
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   702
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   703
apply(fresh_guess add: fs_name1 trans_Var_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   704
apply(fresh_guess add: fs_name1 trans_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   705
apply(fresh_guess add: fs_name1 trans_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   706
apply(fresh_guess add: fs_name1 trans_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   707
apply(fresh_guess add: fs_name1 trans_Pr_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   708
apply(fresh_guess add: fs_name1 trans_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   709
apply(fresh_guess add: fs_name1 trans_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   710
apply(fresh_guess add: fs_name1 trans_InL_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   711
apply(fresh_guess add: fs_name1 trans_InR_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   712
apply(fresh_guess add: fs_name1 trans_Case_def Let_def Isubst_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   713
apply(simp add: trans_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   714
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   715
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   716
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   717
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   718
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   719
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   720
apply(simp add: trans_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   721
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   722
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   723
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   724
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   725
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   726
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   727
apply(simp add: trans_Pr_def Let_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   728
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   729
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   730
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   731
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   732
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   733
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   734
apply(simp add: trans_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   735
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   736
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   737
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   738
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   739
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   740
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   741
apply(simp add: trans_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   742
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   743
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   744
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   745
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   746
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   747
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   748
apply(simp add: trans_InL_def Let_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   749
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   750
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   751
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   752
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   753
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   754
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   755
apply(simp add: trans_InR_def Let_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   756
apply(rule trans)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   757
apply(rule trm_recs)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   758
apply(rule fin_supp_trans)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   759
apply(simp add: fcb_trans_Lam)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   760
apply(simp add: fcb_trans_Case)
21087
3e56528a39f7 Adapted to changes in FCBs.
berghofe
parents: 20955
diff changeset
   761
apply(simp add: fcb_trans_Case)
20606
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   762
apply(fresh_guess add: fs_name1 trans_Var_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   763
apply(fresh_guess add: fs_name1 trans_Var_def perm_if eq_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   764
apply(fresh_guess add: fs_name1 trans_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   765
apply(fresh_guess add: fs_name1 trans_Lam_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   766
apply(fresh_guess add: fs_name1 trans_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   767
apply(fresh_guess add: fs_name1 trans_App_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   768
apply(fresh_guess add: fs_name1 trans_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   769
apply(fresh_guess add: fs_name1 trans_Const_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   770
apply(fresh_guess add: fs_name1 trans_Pr_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   771
apply(fresh_guess add: fs_name1 trans_Pr_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   772
apply(fresh_guess add: fs_name1 trans_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   773
apply(fresh_guess add: fs_name1 trans_Fst_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   774
apply(fresh_guess add: fs_name1 trans_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   775
apply(fresh_guess add: fs_name1 trans_Snd_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   776
apply(fresh_guess add: fs_name1 trans_InL_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   777
apply(fresh_guess add: fs_name1 trans_InL_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   778
apply(fresh_guess add: fs_name1 trans_InR_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   779
apply(fresh_guess add: fs_name1 trans_InR_def Let_def perm_nat_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   780
apply(fresh_guess add: fs_name1 trans_Case_def Let_def Isubst_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   781
apply(fresh_guess add: fs_name1 trans_Case_def Let_def Isubst_eqvt)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   782
apply(assumption)+
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   783
apply(simp add: trans_Case_def Let_def)
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   784
done
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   785
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   786
fd9b0b78a7d3 this file contains a compile-challenge suggested by Adam Chlipala;
urbanc
parents:
diff changeset
   787
end