Paper/Paper.thy
changeset 1708 62b87efcef29
parent 1707 70c5e688f677
child 1709 ccd2ab0cebf3
child 1711 55cb244b020c
equal deleted inserted replaced
1707:70c5e688f677 1708:62b87efcef29
  1209      alpha-equivalence for @{term "x\<^isub>j"}
  1209      alpha-equivalence for @{term "x\<^isub>j"}
  1210      and @{term "fv_ty"} is the free variable function for @{term "x\<^isub>j"}\\
  1210      and @{term "fv_ty"} is the free variable function for @{term "x\<^isub>j"}\\
  1211   $\bullet$ & @{text "x\<^isub>j \<approx>\<^isub>j y\<^isub>j"} for a nominal datatype with no bindings (this includes
  1211   $\bullet$ & @{text "x\<^isub>j \<approx>\<^isub>j y\<^isub>j"} for a nominal datatype with no bindings (this includes
  1212     the types being defined, raw)\\
  1212     the types being defined, raw)\\
  1213   $\bullet$ & @{text "x\<^isub>j = y\<^isub>j"} otherwise\\
  1213   $\bullet$ & @{text "x\<^isub>j = y\<^isub>j"} otherwise\\
       
  1214   \end{tabular}
       
  1215   \end{center}
       
  1216 
       
  1217   The alpha-equivalence relations for binding functions are similar to the alpha-equivalences
       
  1218   for their respective types, the difference is that they ommit checking the arguments that
       
  1219   are bound. We assumed that there are no bindings in the type on which the binding function
       
  1220   is defined so, there are no permutations involved. For a binding function clause 
       
  1221   @{text "bn (C x\<^isub>1 \<dots> x\<^isub>n) = rhs"}, two instances of the constructor are equivalent
       
  1222   @{text "C x\<^isub>1 \<dots> x\<^isub>n \<approx> C y\<^isub>1 \<dots> y\<^isub>n"} if:
       
  1223   \begin{center}
       
  1224   \begin{tabular}{cp{7cm}}
       
  1225   $\bullet$ & @{text "x\<^isub>j"} is not a nominal datatype and occurs in @{text "rhs"}\\
       
  1226   $\bullet$ & @{text "x\<^isub>j = y\<^isub>j"} provided @{text "x\<^isub>j"} is not a nominal datatype and does not occur in @{text "rhs"}\\
       
  1227   $\bullet$ & @{text "x\<^isub>j \<approx>bn\<^isub>m y\<^isub>j"} provided @{text "x\<^isub>j"} is a nominal datatype occuring in @{text "rhs"}
       
  1228     under the binding function @{text "bn\<^isub>m"}\\
       
  1229   $\bullet$ & @{text "x\<^isub>j \<approx> y\<^isub>j"} otherwise\\
  1214   \end{tabular}
  1230   \end{tabular}
  1215   \end{center}
  1231   \end{center}
  1216 
  1232 
  1217 *}
  1233 *}
  1218 
  1234