Nominal/Ex/QuotientSet.thy
author Christian Urban <urbanc@in.tum.de>
Thu, 19 Apr 2018 13:58:22 +0100
branchNominal2-Isabelle2016-1
changeset 3246 66114fa3d2ee
parent 3054 da0fccee125c
permissions -rw-r--r--
updated to Isabelle 2016-1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3054
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     1
theory QuotientSet
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     2
imports 
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     3
  "../Nominal2"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     4
begin
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     5
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     6
lemma supp_quot:
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     7
  "(supp (R, x)) supports (R `` {x})"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     8
unfolding supports_def
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
     9
unfolding fresh_def[symmetric]
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    10
apply(perm_simp)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    11
apply(simp add: swap_fresh_fresh)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    12
done
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    13
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    14
lemma
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    15
  assumes "equiv UNIV R"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    16
  and "(x, y) \<in> R"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    17
  shows "R `` {x} = R `` {y}"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    18
using assms
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    19
by (rule equiv_class_eq)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    20
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    21
lemma s1:
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    22
  assumes "equiv UNIV R"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    23
  and "(x, y) \<in> R"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    24
  shows "a \<sharp> (R `` {x}) \<longleftrightarrow> a \<sharp> (R `` {y})"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    25
using assms
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    26
apply(subst equiv_class_eq)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    27
apply(auto)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    28
done
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    29
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    30
lemma s2:
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    31
  fixes x::"'a::fs"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    32
  assumes "equiv UNIV R"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    33
  and     "supp R = {}"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    34
  shows "\<Inter>{supp y | y. (x, y) \<in> R} supports (R `` {x})"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    35
unfolding supports_def
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    36
apply(rule allI)+
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    37
apply(rule impI)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    38
apply(rule swap_fresh_fresh)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    39
apply(drule conjunct1)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    40
apply(auto)[1]
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    41
apply(subst s1)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    42
apply(rule assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    43
apply(assumption)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    44
apply(rule supports_fresh)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    45
apply(rule supp_quot)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    46
apply(simp add: supp_Pair finite_supp assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    47
apply(simp add: supp_Pair assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    48
apply(drule conjunct2)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    49
apply(auto)[1]
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    50
apply(subst s1)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    51
apply(rule assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    52
apply(assumption)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    53
apply(rule supports_fresh)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    54
apply(rule supp_quot)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    55
apply(simp add: supp_Pair finite_supp assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    56
apply(simp add: supp_Pair assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    57
done
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    58
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    59
lemma s3:
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    60
  fixes S::"'a::fs set"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    61
  assumes "finite S"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    62
  and "S \<noteq> {}"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    63
  and "a \<sharp> S"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    64
  shows "\<exists>x \<in> S. a \<sharp> x"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    65
using assms
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    66
apply(auto simp add: fresh_def)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    67
apply(subst (asm) supp_of_finite_sets)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    68
apply(auto)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    69
done
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    70
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    71
(*
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    72
lemma supp_inter:
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    73
  fixes x::"'a::fs"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    74
  assumes "equiv UNIV R"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    75
  and     "supp R = {}"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    76
  shows "supp (R `` {x}) = \<Inter>{supp y | y. (x, y) \<in> R}"
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    77
apply(rule finite_supp_unique)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    78
apply(rule s2)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    79
apply(rule assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    80
apply(rule assms)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    81
apply(metis (lam_lifting, no_types) at_base_infinite finite_UNIV)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    82
*)
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    83
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    84
  
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    85
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    86
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    87
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    88
end
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    89
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    90
da0fccee125c a few more experiments with alpha-beta
Christian Urban <urbanc@in.tum.de>
parents:
diff changeset
    91