Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  IVSubst.thy

  Sprache: Isabelle
 

(*<*)[]\^><>v]\^supv) = (x1  c1" using assms flip_subst_vby auto
theoryIVSubst
  imports Syntax
begin
  (*>*)

chapter \<>Variable

text [[atom z1]]lst. c1 = [ato z2]]lst. c2" 
java.lang.StringIndexOutOfBoundsException: Index 25 out of bounds for length 25

  (c1[z1::=[x]v) = c1'[z1'::=[x']v"

  has_subst_v = fs +
 fixes subst_v :: "'a::fs ==> x ==> v ==> 'a::fs" ( c1[z1::=[x]\^sub>v" using assms fresh by simp
 assumes fresh_subst_v_if: "y a y sharp> v (y a y = atom x))"
 and forget_subst_v[simp]: "atom x a ==> subst_v a x v = a"
 and subst_v_id[simp]: "subst_v a x (V_var x) = a"
 and eqvt[simp,eqvt]: "(p::perm) (subst_v a x v) = (subst_v (p a) (p x) (p
 and flip_subst_v[simp]: "atom x c ==> ((x z) ".. ==c1[z1v" ussubst_v_si fresh_prod4 ass by auto
java.lang.NullPointerException
 

  subst_v_flfinally show ?thes by auto
 fixes z1::x z2::x and x1::x and x2:::x
 assumes "[[atom z1]]lst. c1 = [[atom z2]]lst. c2"
 and<>Values
java.lang.NullPointerException
  -
 v] z1)
 moreover have "(c2[z2::=[x1] x ==> v" where
 ultimately show ?thesis using Abs1_eq_iff_all(3)[of z1 c1 z"subst_vv (V_lit l) x v = V_lit l"
  (ei bseq_iff_freeh(3) flip_commute)
 

  subst_v_flip_eq_two:
 fixes z1::x and z2::x and x1::x and x2::x
 assumes "[[atom z1]]lst. c1 = [[atom z2]]lst. c2"
 shows "(c1[z1::=b]V_constyid c v') x v = tyid c (su v' x v)"
java.lang.StringIndexOutOfBoundsException: Index 7 out of bounds for length 7
 obtain x::x where *:"atom x (auto ip: ev_e ubt_v_rp_ef,metis v.stn_xas)
 hence "(c1[z1::=[x] x ==> v" ( [1000,50,50] 1000)
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
 thus ?thesis using subst_v_simple_commute * fresh_prod4 by metis
 

  subst_v_flip_eq_three:
 assumes "[[atom z1]]lst. c1 = [[atom z1']]lst. c1'" and "atom x c1" and "atom x' : v.induct) (auto simp: fresh_Pair)
java.lang.NullPointerException
  -
 have "atom x' c1[z1::=[x]v]v" using assms fresh_subst_v_if by simp
 hence "(x x') (c1[z1::=[x]v]v) = c1[z1::=[x]v]v[x::=[x'] su[simp]:
 also have "... = c1[z1::=[x'] <> v"
 also have "... = c1'[z1'::=[x']v" uigsubst_v_lip_eqne[oz1 1 z'c'x'] g assms byaut
 finally show ?thesis by auto
  asssapyinutvrl:.nduc

 

  = subst_vv"

 
 subst_vv :: "v \<show  
 "subst_vv (V_lit l) x v = V_lit l"
  "subst_vv (V_var y) x v = (if x = y then v else V_var y)"
  "subst_vv (V_cons tyid c v') x v = V_cons tyid c (subst_vv v' x v)"
  "subst_vv (V_consp tyid c b v') x v = V_consp tyid c b (subst_vv v' x v)"
  "subst_vv (V_pair v1 v2) x v = V_pair (subst_vv v1 x v ) (subst_vv v2 x v )"
 by(auto simp: eqvt_def subst_vv_graph_aux_def, metis v.strong_exhaust)
  (eqvt) by lexicographic_order

 
 subst_vv_abbrev :: "v ==> x ==> v ==> v" (
 where
 "v[x::=']\<^>v

 ubst_vv_if [simps_vv_if [simp]:
 "j
 using supp_l_empty apply (induct t rule: v.induct,auto simp add: subst_vv.simps fresh_def, auto)
 by (simp add: supp_at_base |met

  forget_sushow "p t1) (p v)"
 by (induct tm rule: v.induct) (simp_all add: fresh_at_base)

java.lang.NullPointerException
 by (induct tm rule: v.induct) simp_all

  [simp]:
 "atom j c ==> ( c) = c[z::=[x]v"
 y(induct t levidc) (at smp:feh_Pair

  suf xxan: :x
 atom j <>< j ==>vvv = tm[j::=u]vv[i::=t]vv"
 by (induct tm rule: v.induct) auto

  subst_vv_var_flip[simp]:
 fixes v::v
 assumes "atom y v"
 shows "(y x)
 using assms apply(induct v rule:v.induct)
 apply auto
 using l.fresh l.perm_simps l.strong_exhaust supp_l_empty permute_pure permute_list.simps fresh_def flip_fresh_fresh apply fastforce
 using permute_pure apply blast+
 done

  v :: has_sui subst_e: "e \<> 
 

 
 "subst_v = subst_vv"

  proof
 fix j::atom and i::x and x::v and t::v
 show "(j l v') ) x v = ( (A ( v' x v) )"
 using fresh_subst_vv_if[of j t i x] subst_v_v_def by metis

 fix a::x and tm::v and x::v
 showshow a a \sharp tm \<> 
 using forget_subst_vv subst_v_v_def by simp

 fix a::x and tm::v
 show "subst_v tm a (V_var a) = tm" using subst_vv_id subst_v_v_def by simp

 fix p::perm and x1::x and v::v and t1::v
 show "p subst_v t1 x1 v = subst_v (p t1) (p x1) (p v)"
 using subst_v_v_def by simp

 fix x::x and c::v and z::x
 show "atom x ( (AE_appP fb v' ) xv = ( (AE_a f b (sbst_ v' x )) )"
 using subst_v_v_def by simp

 fix x::x and c::v and z::x
 show "atom x c ==> c[z::=[x]v] v2 x v)) )")"
 using subst_v_v_def by simp
 

 

  Expressions

  subst_ev :: "e ==> x ==> v ==> e" where
 "subst_ev ( (AE_val v') ) x v = ( (AE_val (subst_vv v' x v)) )"
  "subst_ev ( (AE_app f v') ) x v = ( (AE_app f (subst_vv v' x v )) )"
  "subst_ev ( (AE_appP f b v') ) x v = ( (AE_appP f b (subst_vv v' x v )) )"
  "subst_ev ( (AE_op opp v1 v2) ) x v = ( (AE_op opp (subst_vv v1 x v ) (subst_vv v2 x v )) )"
  "subst_ev [#1 v']e x v = [#1 (subst_vv v' x v )]e"
  "subst_ev [#2 v']e x v = [#2 (subst_vv v' x v )]e"
  "subst_ev ( (AE_mvar u)) x v = AE_mvar u"
  "subst_ev [| v' |]e xv = [1 (substvv ' x v )]\^sup>e""
  "subst_ev ( AE_concat v1 v2) x v = AE_concat (subst_vv v1 x v ) (subst_vv v2 x v )"
  "subst_ev ( AE_split v1 v2) x v = AE_split (subst_vv v1 x v ) (subst_vv v2 x v )"
 by(simp add: eqvt_def subst_ev_graph_aux_def,auto)(meson e.strong_exhaust)

  (eqvt) by lexicographic_order

 
java.lang.NullPointerException
 where
 "e[x::=v']ev su ( (AEu))x v A u"

  size_subst_ev [simp]: "size ( subst_ev A i x) = size A"
 apply (nominal_induct A avoiding: i x rule: e.strong_induct)
 by auto

  forget_subst_ev [simp]: "atom a A ==> subst_ev A a x = A"
 apply (nominal_induct A avoiding: a x rule: e.strong_induct)
 by (auto simp: fresh_at_base)

  subst_ev_id [simp]: "subst_ev A a (V_var a) = A"
 by (nominal_induct A avoiding: a rule: e.strong_induct) (auto simp: fresh_at_base)

  fresh_subst_ev_if [simp]:
 "j (subst_ev A i x ) = ((atom i A j A) (j x (j A j = atom i)))"
 apply (induct A rule: e.induct)
 unfolding subst_ev.simps fresh_subst_vv_if apply auto+
 using pure_fresh fresh_opp_all apply metis+
 done

  subst_ev_commute [simp]:
 "atom j A ==> (A[i::=t]ev)[j::=u]ev = A[i::=t[j::=u]vv]ev"
 by (nominal_induct A avoiding: i j t u rule: e.strong_induct) (auto simp: fresh_at_base)

  subst_ev_var_flip[simp]:
 fixes e::e and y::x and x::x
 assumes "atom y e"
 shows "(y x) e = e [x::=V_var y]ev"
 using assms apply(nominal_induct e rule:e.strong_induct)
 apply (simp add: subst_v_v_def)
 apply (metis (mono_tags, lifting)
 apply (metis (mono_tags, lifting) b.eq_iff b.perm_simps e.fresh e.perm_simps flip_b_id subst_ev.simps subst_vv_var_flip)
 
 apply (rule_tac y=x in opp.strong_exhaust)
 using subst_vv_var_flip flip_def by (simp add: flip_def permute_pure)+
 using subst_vv_var_flip flip_def by (simp add: flip_def permute_pure)+

  subst_ev_flip:
 fixes e::e and ea::e and c::x
 assumes "atom c
java.lang.NullPointerException
  -
 have "e[x::=v'] ==>Rightarrow> e" (
 also have "... = ((c x) e)[c::=v']ev" using subst_ev_var_flip assms by simp
 also have "... = ((c xa) ea)[c::=v']ev" using assms flip_commute by metis
 also have "... = ea[xa::=v']ev" using subst_ev_var_flip assms by simp
 finally show ?thesis by auto
 

  subst_ev_var[simp]:
 "(AE_val (V_var x))[x::=[z]v]ev = AE_val (V_var z)"
 by auto

  e :: has_subst_v
 

 
 "subst_v = subst_ev"

  proof
 fix j::atom and i::x and x::v and t::e
 show "(j subst_v t i x) = ((atom i t j t) (j x (j
 using fresh_subst_ev_if[of j t i x] subst_v_e_def by metis

 fix a::x and tm::e and x::v
 show "atom a tm ==> subst_v tm a x = tm"
 using forget_subst_ev subst_v_e_def by simp

 fix a::x and tm::e
 show "subst_v tm a (V_var a) = tm" using subst_ev_id subst_v_e_def by simp

 fix p::perm and x1::x and v::v and t1::e
 show "p subst_v t1 x1 v = subst_v (p t1) (p
 using subst_ev_commute subst_v_e_def by simp

 fix x::x and c::e and z::x
java.lang.NullPointerException
 using subst_v_e_def by simp

 fix x::x and c::e and z::x
java.lang.NullPointerException
 using subst_v_e_def by simp
 
 

  subst_ev_commute_full:
 fixes e::e and w::v and v::v
 assumes "atom z v" and "atom x w" and "x z"
java.lang.NullPointerException
 using assms by(nominal_induct e rule: e.strong_induct,simp+)

  subst_ev_v_flip1[simp]:
 fixes e::e
 assumes "atom z1 (z,e)" and "atom z1' (z,e)"
 shows"(z1 z1') e[z::=v]e nominal_in A avoi: a a :strong_induct) (auto : f)
 using assms proof(nominal_induct e rule:e.strong_induct)
  (simp add: flip_def fresh_Pair swap_fresh_fresh)+

 

  subst_cev :: "ce ==> x ==>A \andj\<> 
 "subst_cev ( (CE_val v') ) x v = ( (CE_val (subst_vv v' x v )) )"
  "subst_cev ( (CE_op opp v1 v2) ) x v = ( (CE_op opp (subst_cev v1 x v ) (subst_cev v2 x v )) )"
  "subst_cev ( (CE_fst v')) x v = CE_fst (subst_cev v' x v )"
  "subst_cev ( (CE_snd v')) x v = CE_snd (subst_cev v' x v )"
  "subst_cev ( (CE_len v')) x v = CE_len (subst_cev v' x v )"
  "subst_cev ( CE_concat v1 v2) x v = CE_concat (subst_cev v1 x v ) (subst_cev v2 x v )"
 apply (simp add: eqvt_def subst_cev_graph_aux_def,auto)
 by (meson ce.strong_exhaust)

  (eqvt) by lexicographic_order

 
 subst_cev_abbrev :: "ce ==> x ==> v ==> ce" (_[_::=_]cev [1000,50,50] 500)
 where
 "e[x::=v']cev subst_cev e x v'"

  size_subst_cev [simp]: "size ( subst_cev A i x ) = size A"
 by (nominal_induct A avoiding: i x rule: ce.strong_induct,auto)

  forget_subst_cev [simp]: "atom a A ==> subst_cev A a x = A"
 by (nominal_induct A avoiding: a x rule: ce.strong_induct, auto simp: fresh_at_base)

  subst_cev_id [simp]: "subst_cev A a (V_var a) = A"
 by (nominal_induct A avoiding: a rule: ce.strong_induct) (auto simp: fresh_at_base)

  fresh_subst_cev_if [simp]:
 "j (subst_cev A i x ) = ((atom i A j A) (j x (j A j = atom i)))"
 (nominal_induct A avoiding: i x rule: ce.strong_induct)
 case (CE_op opp v1 v2)
 then show ?case using fresh_subst_vv_if subst_ev.simps e.supp pure_fresh opp.fresh
 fresh_e_opp
 using fresh_opp_all by auto
 (auto)+

  subst_cev_commute [simp]:
 "atom j A ==> (subst_cev (subst_cev A i t ) j u) = subst_cev A i (subst_vv t j u )"
 by (nominal_induct A avoiding: i j t u rule: ce.strong_induct) (auto simp: fresh_at_base)

  subst_cev_var_flip[simp]:
 fixes e::ce and y::x and x::x
 assumes "atom y e"
 shows "(y x) e = e [x::=V_var y]cev"
 using assms proof(nominal_induct e rule:ce.strong_induct)
 case (CEnduct A rule: e.nduct)
 then show ?case using subst_vv_var_flip by auto
 
 case (CE_op opp v1 v2)
 hence yf: "aty blast
 have " (y x) (CE_op opp v1 v2 ) = CE_op ((y x) opp) ( (y x) v1 ) ( (y x) v2)"
  opp.perm_simps ce.p.perm_simps permute_pure ce.fres opp.st by pr
java.lang.NullPointerException
 by (simp add: CE_op.hyps(1) CE_op.hyps(2))
 finally show ?case using subst_cev.simps opp.perm_simps opp.strong_exhaust
  (me (full_types))
 ( (auto simp add: permute_pure subst_vv_var_flip)+)

  subst_cev_flip:
 fixes e::ce and ea::ce and c::x
 assumes "atom c (e, ea)" and "atom c (x, xa, e, ea)" and "(x c) nom A rule: e.stro) (a sim fresh_atbas
java.lang.NullPointerException
  -
 have "e[x::=v']:andy:: x::x
 also have "... = ((c x)
java.lang.NullPointerException
 also have "... = ea[xa::=v']cev" using subst_ev_var_flip assms by simp
 finally show ?thesis by auto
 

  subst_cev_var[simp]:
 fixes z::x and x::x
 shows "[[x]v]
 by auto

  ce :: has_subst_v
 

 
 "subst_v = subst_cev"

  proof
 fix j::atom and i::x and x::v anapply (metis mono_t, lifting) b.eq bperm_simps e.fresh e. flip_b_id substev. substvv_var_)
 show "(j subst_v t i x) = ((atom i t j t) (j s)
 using fresh_subst_cev_if[of j t i x] subst_v_ce_def by metis

 fix a::x and tm::ce and x::v
 show "atom a tm ==> subst_v tm a x = tm"
 using forget_subst_cev subst_v_ce_def by simp

 fix a::x and tm::ce
 show "subst_v tm a (V_var a) = tm" using subst_cev_id subst_v_ce_def by simp

 fix p::perm and x1::x and v::v and t1::ce
 show "p subst_v t1 x1 v = subst_v (p t1) (p x1) (p v)"
 using subst_cev_commute subst_v_ce_def by simp

 fix x::x and c::ce and z::x
 show "atom x c ==> ((x for x
 using subst_v_ce_def by simp

 fix x::x and c::ce and z::x
 show "atom x c ==> c [z::=V_var x]\<^    using
 using subst_v_ce_def by simp
 

 

  subst_cev_commute_full:
 fixes e::ce and w::v and v::v
 assumes "atom z v" and "atom x w" and "x z"
java.lang.NullPointerException
 using assms by(nominal_induct e rule: ce.strong_induct,simp+)


  subst_cev_v_flip1[simp]:
 fixes e::ce::ce
 assumes "atom z1 (z,e)" and "atom z1' (z,e)"
java.lang.NullPointerException
 using assms apply(nominal_induct e rule:ce.strong_induct)
 by (simp add: flip_def fresh_Pair swap_fresh_fresh)+

  Constraints

  subst_cv :: "c ==> x ==> v ==>
 "subst_cv (C_true) x v = C_true"
  "subst_cv (C_false) x v = C_false"
  "subst_cv (C_conj c1 c2) x v = C_conj (subst_cv c1 x v ) (subst_cv c2 x v )"
  "subst_cv (C_disj c1 c2) x v = C_disj (subst_cv c1 x v ) (subst_cv c2 x v )"
  "subst_cv (C_imp c1 c2) x v = C_imp (subst_cv c1 x v ) (subst_cv c2 x v )"
  "subst_cv (e1 == e2) x v = ((subst_cev e1 x v ) == (subst_cev e2 x v ))"
  "subst_cv (C_not c) x v = C_not (subst_cv c x v )"
 apply (simp add: eqvt_def subst_cv_graph_aux_def,auto)
 using c.strong_exhaust by metis
  (eqvt) by lexicographic_order

 
 subst_cv_abbrev :: "c ==> x ==> v ==> c" (
 where
 "c[x::=v']cv subst_cv c x v'"

  size_subst_cv [simp]: "size ( subst_cv A i x ) = size A"
 by (nominal_induct A avoiding: i x rule: c.strong_induct,auto)

  forget_subst_cv [simp]: "atom a A ==> subst_cv A a x = A"
 by (nominal_induct A avoiding: a x rule: c.strong_induct, auto simp: fresh_at_base)

  subst_cv_id [simp]: "subst_cv A a (V_var a) = A"
 by (nominal_induct A avoiding: a rule: c.strong_induct) (auto simp: fresh_at_base)

  fresh_subst_cv_if [simp]:
 "j (subst_cv A i x ) (atom i A j A) (j x (j A j = atom i))"
 by (nominal_induct A avoiding: i x rule: c.strong_induct, (auto simp add: pure_fresh)+)

 subst_cv_commute [simp]:
java.lang.NullPointerException
 by (nominal_induct A avoiding: i j t u rule: c.strong_induct) (auto simp: fresh_at_base)

  let_s_size [simp]: "size s size (AS_let x e s)"
 apply (nominal_induct s avoiding: e x rule: s_branch_s_branch_list.strong_induct(1))
 apply auto
 done

  subst_cv_var_flip[simp]:
 fixes c::c
 assumes "atom y c"
 shows "(y x) c = c[x::=V_var y]cv"
  by(nominal_induct c rule:c.,(simp add flipsubst_v_ce_def)+)

  c :: has_subst_v
 

 
 "subst_v = subst_cv"

  proof
 fix j::atom and i::x and x::v and t::c
 show "(j subst_v t i x) = ((atom i t j t) (j x (j t j = atom i)))"
 using fresh_subst_cv_if[of j t i x] subst_v_c_def by metis

 fix a::x and tm::c and x::v
 showsubst_ev_var[imp:
 using forget_subst_cv subst_v_c_def by simp

 fix a::x and tm::c
 show "subst_v tm a (V_var a) = tm" using subst_cv_id subst_v_c_def by simp

 p:perand x1::x a v::v and t1::::c
 show "p subst_v t1 x1 v = subst_v (p t1) (p x1) (p
 using subst_cv_commute subst_v_c_def by simp

 fix x::x and c::c and z::x
 show "atom x
 using subst_cv_var_flip subst_v_c_def by simp

 and c::c and ::
java.lang.NullPointerException
 using subst_cv_var_flip subst_v_c_def by simp
 

 

  subst_cv_var_flip1[simp]:
 fixes c::c
 assumes "atom y c"
 shows "(x y) c = c[x::=V_var y]c<sharp> t \< j
 using subst_cv_var_flip flip_commute
 by (metis assms)

  subst_cv_v_flip3[simp]:
 fixes c::c
 assumes "atom z1 c" and "atom z1' c"
 shows"(z1 z1') c[z::=[z1]v]cv = c[z::=[z1']v]cv"
  -
 consider "z1' = z" | "z1 = z" | "atom z1 z atom z1' z" by force
 then show ?thesis proof(cases)
 case 1
 then show ?thesis using 1 assms by auto
 next
 case 2
 then show ?thesis using 2 assms by auto
 next
 case 3
 then show ?thesis using assms by auto
 qed
 

  subst_cv_v_flip[simp]:
 fixes c::c
 assumes "atom x c"
 shows "((x z) c)[x::=v]cv = c [z::=v]cv"
 using assms subst_v_c_def by auto

  subst_cv_commute_full:
 fixes c::c
 assumes "atom z v" and "atom x w" and "xz"
 shows "(c[z::=w]cv)[x::=v]cv = (c[x::=v]c[of j t i x sub bym
 using assms proof(nominal_induct c rule: c.strong_induct)
 ase ( (C_eq e1e1 e2
 then show ?case using subst_cev_commute_full by simp
 (force+)

  subst_cv_eq[simp]:
 assumes "atom z1 e1"
 shows "(CE_val (V_var z1) == e1 )[z1::=[x] = tm"
  -
 have "?A = (((CE_val (V_var z1))[z1::=[x]v]cev) == e1)" using subst_cv.simps assms by simp
 thus ?thesis by simp
 

 

 
  x is fresh in v but this causes problems with proofs.


  subst_gv :: "Γ "su tm a (Vvar a) tm" us s by s
 "subst_gv GNil x v = GNil"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 goal_cases)
 case 1
 then show ?case by(simp add: eqvt_def subst_gv_graph_aux_def )
 
 case (3 P x)
 then show ?case by (metis neq_GNil_conv prod_cases3)
 (fast+)
  (eqvt) by lexicographic_order

 
 subst_gv_abbrev :: "Γ ==> x ==>
 where
java.lang.NullPointerException

 size_subst_gv [simp]: "size ( G i x ) \<> 
 by (induct G,auto)

  forget_subst_gv [simp]: "atom a G ==> subst_gv G a x = G"
 apply (induct G ,auto)
 using fresh_GCons fresh_PairD(1) not_self_fresh apply blast
 apply (simp add: fresh_GCons)+
 done

  fresh_subst_gv: "atom a G ==>
 (induct G)
 case GNil
 then show ?case by auto
 
 case (GCons xbc G)
java.lang.NullPointerException
 show ?case proof(cases "x=x'")
 case True
 have "atom a G" using GCons fresh_GCons by bla simp
 thus ?thesis using subst_gv.simps(2)[of x' b' c' G] GCons xbc True
 next
 case False
 then show ?thesis using subst_gv.simps(2)[
 qed
 

  subst_gv_flip:
 fixes x::x anx and xxa::x and z::x and c::c and b::b and Γ
 assumes "atom xa ((x, b, c[z::=[x]"atom z \sharp" and "atomx <>w
java.lang.NullPointerException
  -
 have "(x xa) ((x, b, c[z::=[x]v]cv) #\Γ Γ) = (( (x xa) x, b, (x xa) c[z::=[x]v]cv) #\Γ ((x e r: e.,si+)
 using subst Cons_eqvt flip_fresh using G_cons_flip by si
java.lang.NullPointerException
 also have "... = ((xa, b, c[z::=V_var xa]ze)"
 also have "... = ((xa, b, c[z::=V_var xa]cv) #\Γ Γ)" using assms flip_fresh_fresh by blast
 finally show ?thesis by simp
 

  Types

  subst_tv :: "τ ==> x ==> v ==> τ rule:estrong_induct)
 "atom z (x,v) ==> subst_tv { z : b | c }
 apply (simp add: eqvt_def subst_tv_graph_aux_def )
 apply auto
 subgoal for P a aa b
 apply(rule_tac y=a and c="(aa,b)" in τ.strong_exhaust)
 by (auto simp: eqvt_at_def fresh_star_def fresh_Pair fresh_at_base)
 apply (auto simp: eqvt_at_def fresh_star_def fresh_Pair fresh_at_base)
  -
 fix z :: x and c :: c and za :: x and xa :: x and va :: v and ca :: c and cb :: x
 assume a1: "atom za va" and a2: "atom
 assume a4: "atom cb
 assume a10:"cb xa"
 note assms = a10 a9 a8 a7 a6 a5 a4 a3 a2 a1

 have "c[z::=V_var cb]cv = ca[za::=V_var cb]cv" using assms by auto
 hence "c[z::=V_var cb] v' x' x v )) )) )
 moreover have "c[z::=V_var cb]cv[xa::=va]cv = c[xa::=va]cv[z::=V_var cb]cv" using subst_cv_commute_full[of z va xa "V_var cb" ] assms fresh_def v.supp by fastforce
 moreover have "ca[za::=V_var cb] "subst_cev ( (CE_op opp v1 v2) ) x v = ( (CE_op opp (sub v1 x v ) subst_ v2x v )) )"
 using subst_cv_commute_full[of za va xa "V_var cb" ] assms fresh_def v.supp by fastforce

 ultimately show "c[xa::=va]cv[z::=V_var cb]cv = ca[xa::=va]) x =CE_ (su v x v )"
 

  (eqvt) by lexicographic_order

 
java.lang.NullPointerException
 where
 "t[x::=v]\τv subst_tv t x v"

  size_subst_tv [simp]: "size ( subst_tv A i x ) = size A"
  ((nominal_in A avoi: i x r: \<tau.
 case (T_refined_type x' b' c')
 then show ?case by auto
 

  forget_subst_tv [simp]: "atom a A ==> subst_tv A a x = A"
 apply (nominal_induct A avoiding: a x rule: τ.strong_induct)
 apply(auto simp: fresh_at_base)
 one

  subst_tv_id [simp]: "subst_tv A a (V_var a) = A"
 by (nominal_induct A avoiding: a rule: τasimp:fresh_at_base)

  fresh_subst_tv_if [simp]:
 "j (subst_tv A i x ) (atom i st)
 apply (nominal_induct A avoiding: i x rule: τ.strong_induct)
 using fresh_def supp_b_empty x_fresh_b by auto

  subst_tv_commute [simp]:
 atom y \sharp τt]<au>sub🚫
 by (nominal_induct τ avoiding: x y t v rule: τ.strong_induct) (auto simp: fresh_at_base)

  subst_tv_var_flip [simp]:
 fixes x::x and xa::x and τ::τ
 assumes "atom xa τ"
 shows "(x xa) τ = τ[x::=V_var xa]\τv"
  -
 obtain z::x and b and c where zbc: "atom z (x,xa, V_var xa) τ = { z : b | c }"
 using obtain_fresh_z by (metis prod.inject subst_tv.cases)
 hence "atom xa supp c - { atom z }" using τ.supp[of z b c] fresh_def supp_b_empty assms
 by auto
 moreover have "xa z" using zbc fresh_prod3 by force
 ultimately have xaf: "atom xa c" using fresh_def by auto
 have "(x xa) τ = { z : b | (x xa) c }"
 by (metis τ.perm_simps empty_iff flip_at_base_simps(3) flip_fresh_fresh fresh_PairD(1) fresh_PairD(2) fresh_def not_self_fresh supp_b_empty v.fresh(2) zbc)
 also have "... = { z : b | c[x::=V_var xa]cv }" using subst_cv_v_flip xaf
 by (metis permute_flip_cancel permute_flip_cancel2 subst_cv_var_flip)
 finally show ?thesis using subst_tv.simps zbc
 using fresh_PairD(1) not_self_fresh by force
 

  τ :: has_subst_v
 

 
 "subst_v = subst_tv"

  proof
 fix j::atom and i::x and x::v and t::τ
 show "(j subst_v t i x) = ((atom i t j t) (j x (j t j = atom i)))"

 proof(nominal_induct t avoiding: i x rule:τ.strong_induct)
 case (T_refinedabbreviation
 hence " j {x\Rightarrow v <Rightarrow ],] 500)
 also have "... = (atom i { z : b | c } j { z : b | c } j x (j { z : b | c } j = atom i))"
 unfolding τ.fresh using subst_v_c_def fresh_subst_v_if
 using T_refined_type.hyps(1) T_refined_type.hyps(2) x_fresh_b by auto
 finally s
 qed

 fix a::x and tm::τ and x::v
 show "atom a tm ==> subst_v tm a x = tm"
 apply(nominal_induct tm avoiding: a x rule:τ.strong_induct)
  subst forget_subst_v sub.simps subsτ

 fix a::x and tm::τ
 show "subst_v tm a (V_var a) = tm"
 apply(nominal_induct tm avoiding: a rule:τ.strong_induct)
 using subst_v_c_def forget_subst_v subst_tv.simps subst_v_τ_def fresh_Pair by simp

  and v::v and t1::τ
java.lang.NullPointerException: Cannot invoke "String.equals(Object)" because "brackoff" is null
 apply(nominal_induct tm avoiding: a x rule:τ)(aut simp:
 using subst_v_c_def forget_subst_v subst_tv.simps subst_v_τ_def fresh_Pair by simp

 fix x::x and c::τ and z::x
java.lang.NullPointerException
 apply(nominal_induct c avoiding: z x rule:τ.strong_induct)
 using subst_v_c_def flip_subst_v subst_tv.simps subst_v_τ_def fresh_Pair by auto

 fix x::x and c::τ and z::x
 show "atom x c ==> c[z::=[x]v]v[x::=v]v = c[z::=v]v"
 apply(nominal_induct c avoiding: x v z rule:τ.strong_induct)
 using subst_v_c_def subst_tv.simps subst_v_τ_def fresh_Pair   j
 by (metis flip_commute subst_tv_commute subst_tv_var_flip subst_v_τ_def subst_vv.simps(2))
 

 

  subst_tv_commute_full:
 fixes c::τ
 assumes "atom z v" and "atom x w" and "xz"
 shows "(c[z::=w]\τv)[x::=v]\τv = (c[x::=v]\τv)[z::=w]\τv"
 using assms proof(nominal_induct c avoiding: x v z w rule: τ.strong_induct)
 case (T_refined_type x1a x2a x3a)
 then show ?case using subst_cv_commute_full by simp
 

  type_eq_subst_eq:
 fixes v::v and c1::c
 assumes "{ z1 : b1 | c1 } = { z2 : b2 | c2 }"
 shows "c1[z1::=v]cv = c2[z2::=v]cv"
 using subst_v_flip_eq_two[of z1 c1 z2 c2 v] τ.eq_iff assms subst_v_c_def by simp

  Extract constraint from a type. e.strong_
  alpha-equivalent types give different answers


  c_of :: "τ ==> x ==>show ?case usingsub.simps e.supp pure_fresh opp.fresh
java.lang.NullPointerException
 (goal_cases)
 case 1
 then show ?case using eqvt_def c_of_graph_aux_def by force
 
 case (2 x y)
 then show ?case using eqvt_def c_of_graph_aux_def by force
 
 case (3 P x)
 then obtain x1::τ
 obtain z' and b' and c' where "x1 = { subst_cev_commute [simp]:
 then show ?case using 3 * by auto
 
 case (4 z1 x1 b1 c1 z2 x2 b2 c2)
 then show ?case using subst_v_flip_eq_two τ.eq_iff by (metis prod.inject type_eq_subst_eq)
 

  (eqvt) by lexicographic_order

  c_of_eq:
  "c_of {> x = c"
 (nominal_induct "{ x : b | c }" avoiding: x rule: τ.strong_induct)
 case (T_refined_type x' c')
 moreover hence "c_of { x' : b | c' } x = c'[x'::=V_var x]cv" using c_of.simps by auto
 moreover have "{ x' : b | c' } = {e::ce and y::x and x::x
 moreover have "c'[x'::=V_var x]cassumes "atom y
 by (metis subst_cv_id)
 ultimately show ?case by auto
java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 3

  obtain_fresh_z_c_ofe
 t:::"'b:fs"
 obtains z where "atom z t τ = { z : b_of τ | c_of τ z }"
  -
 obtain z and c where "atom z yf: "atom y \sharpv by bl
 moreover hence "c = c_of τ z" using c_of.simps using c_of_eq by metis
 ultimately show ?thesis
 using that by auto
 

  c_of_fresh:
 fixes x::x
 assumes "atom x (t,z)"
 shows "atom x c_of t z"
  -
  z' and c' where z"t = {| c' \<> 
 hence *:"c_of t z = c'[z'::=V_var z]cv" using c_of.simps fresh_Pair by metis
 have "(atom x c' atom x set [atom z']) atom x b_of t" using τ.fresh assms z fresh_Pair by metis
 hence "atom x c'" using fresh_Pair z fresh_at_base(2) by fastforce
 moreover have "atom x V_var z" using assms fresh_Pair v.fresh by metis  opp.perm_simps ce.permpermute_pure ce.fre op.strong_exhaust by presburger
 ultimately show ?thesis using assms fresh_subst_v_if[of "atom x" c' z' "V_var z"] subst_v_c_def * by metis
 

  c_of_switch:
  z::x
 assumes "atom z t"
 shows "(c_of t z)[z::=V_var x]simpsopp.perm_simps opp.strong_exhaust
  -
 obtain z' and c' where z:"t = { z' : b_of t | c' } atom z' (x,z)"
 hence "(atom z ( (auto simp add: permu subst_vv_var_fl)+)
 moreover have " atom z set [atom z']" using z fresh_Pair by force
 ultimately have **:"atom z

java.lang.NullPointerException
 also have "... = c'[z'::=V_var x] and c::x
 finally show ?thesis using c_of.simps[of z' x "b_of t" c'] fresh_Pair z by metis
 

  type_eq_subst_eq1:  "atom c > (x, , e, ea)" and " "(x \leftrightarrow ) <> 
 fixes v::v and c1::c
 assumes "{ z1 : b1 | c1 } = ({ z2 : b2 | c2 })" and "atom z1 c2"
 shows "c1[z1::=v]cv = c2[z2::=v]cv" and "b1=b2" and " c1 = (z1 z2) c2"
  -
 show "c1[z1::=v]cv = c2[z2::=v]']\^sub>🚫
 show "b1=b2" using τ.eq_iff assms by blast
 have "z1 = z2 c1 = c2 z1
 using τ.eq_iff Abs1_eq_iff[of z1 c1 z2 c2] assms by blast
 thus "c1 = (z1 <bullet 
 

  type_eq_subst_eq2:
 fixes v::v and c1::c
 assumes "{also hav"... = (c 🚫
 shows "c1[z1::=v]cv = c2[z2::=v]cv" and "b1=b2" and "[[atom z1]]lst. c1 = [[atom z2]]lst. c2"
  -
 show "c1[z1::=v]cv = c2[z2::=v]cv" using type_eq_subst_eq assms by blast
 show "b1=b2" using τ.eq_iff assms by blast
 show "[[atom z1]]lst. c1 = [[atom z2]]lst. c2"
 using τ.eq_iff assms by auto
 

 type_eq_subst_eq3:
 fixes v::v and c1::c
 assumes "{ z1 : b1 | c1 } = ({ z2 : b2 | c2 })" and "atom z1 c2"
java.lang.NullPointerException
 using type_eq_subst_eq1 assms subst_v_c_def
 by (metis subst_cv_var_flip)+

  type_eq_flip:
 assumes "atom x c"
 shows "{ z : b | c } = { x : b | (x z ) qe
 using τ.
 by (metis (no_types, lifting) flip_fresh_fresh)

 c_of_true:
 "c_of { z' : B_bool | TRUE } x = C_true"
 (nominal_induct "{ z' : B_bool | TRUE }" avoiding: x rule:τ.strong_induct)
 case (T_refined_type x1a x3a)
 hence "{ z' : B_bool | TRUE } fix z::x and x::x
 then show ?case using subst_cv.simps c_of.simps T_refined_type
 type_eq_subst_eq3
 by (metis type_e)
 

 type_eq_subst:
 assumes "atom x c"
 shows "{ z : b | c } = { x : b | c[z::=[x]instantiation ce :: has_subst_v
 using τ.eq_iff Abs1_eq_iff assms
 using subst_cv_var_flip type_eq_flip by auto

  type_e_subst_fresh:
 fixes x::x and z::x
 assumes "atom z (x,v)" and "atom x e"
 shows "{
 using assms subst_tv.simps subst_cv.simps forget_subst_cev by simp

 
 fixes x::x and z::x
 assumes "atom z (x,v)" and "atom x s> subst_v t i x) = ((atom i \sharp t <and or j = atom i)))"
 shows "{ z : b | CE_val (V_var z) == CE_val v' }[x::=v]\τv = { z : b | CE_val (V_var z) == CE_val v' }"
 using assms subst_tv.simps subst_cv.simps by simp

  subst_tbase_eq:
 "b_of τ = b_of τ[x::=v]\τv"
  -
 obtain z and b and c where zbc: "τ = { z:b|c} atom z (x,v)" using τ.exhaust
 by (metis prod.inje subst_tv.c
 hence "b_of { z:b|c} = b_of { z:b|c}[x::=v]\τv" using subst_tv.simps by simp
 thus ?thesis using zbc by blast
 

  subst_tv_if:
 assumes "atom z1 subst_v tm a = tm"
 shows "{ z1 : b | CE_val (v'[x::=v]vv) == CE_val (V_lit l) IMP (c'[x::=v]cv)[z'::=[z1]v]simp
 { z1 : b | CE_val v' == CE_val (V_lit l) IMP
 using subst_cv_commute_full[of z' v x
 by simp

  substubst_tv_tid:
 assumes "atom za (x,v)"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 using assms subst_tv.simps subst_cv.simps by presburger


  b_of_subst:
 "b_of (τ[x::=v]show "p subst_v (p \<> 
  -
 obtain z b c where *:"τ = { z : b | c } atom z (x,v)" using obtain_fresh_z by metis
 thus ?thesis using subst_tv.simps * by auto
 

  subst_tv_flip:
 assumes "τ]v τ ""atom x "atom x'
 shows "((x' x) τ')[x'::=v]\τv = τ"
  -
 have "(x' x) v = v (x' x) τ = τ" using assms flip_fresh_fresh by auto
 thus ?thesis using subst_tv.eqvt[of "(x'
 

  subst_cv_true:
 "{ z : B_id tid | TRUE } = { z : B_id tid | TRUE }[x::=v]sharp>c ==> v"
  -
 obtain za::x where "atom za (x,v)" using obtain_fresh by auto
 hence "{ z : B_id tid | TRUE } = { za: B_id tid | TRUE }" using τ.eq_iff Abs1_eq_iff by fastforce
 moreover have "{ za : B_id tid | TRUE } = { za : B_id tid | TRUE }[x::=v]\τv"
 using subst_cv.simps subst_tv.simps by (simp add:
 show ?thesis by ar
 

  t_eq_supp:
 assumes "({"atatom \sharp c ==>:=V_var x]\<^<sub
 shows "supp c - { atom z } = supp c1 - { atom z1 }"
  -
 have "supp c - { atom z } supp b = supp c1 - { atom z1 } supp b1" using τ.supp assms
 by (metis list.set(1) list.simps(15) sup_bot.right_neutral supp_b_empty)
 moreover have "supp b = supp b1" using assms τ.eq_iff by simp
 moreover have "atom z1 supp b1 atom z supp b" using supp_b_empty by simp
 using subst_v_ce_def by simp
 by (metis τ.eq_iff τ.supp
 

  fresh_t_eq:
 fixes x::x
 assumes "({ z : b | c }
 s "atom x
  -
 have "supp c - { atom z } supp b = supp cc - { atom zz } fixes e::ce and w::v and v::v
 by (metis list.set(1) list.simps(15) sup_bot.right_neutral supp_b_empty)
 moreover have "atom x "atom z > w" and "x
 ultimately have "atom x supp cc - { atom zz } supp b" by force
 hence "atom x supp cc" using assms by simp
java.lang.NullPointerException
 

  Mutable Variable Context

  subst_dv :: "Δ ==> x ==> v ==> Δ" where
 "subst_dv DNil x v = DNil"
  "subst_dv ((u,t) #\Δ Δ) x v = ((u,t[x::=v] using assms by(nominal_induct e rule: cc.strong_induc,simp+)
 apply (simp add: eqvt_def subst_dv_graph_aux_def,auto )
 using delete_aux.elims by (metis Δ
  (eqvt) by lexicographic_order

 
 subst_dv_abbrev :: "Δ subst_cev_v_f[simp]:
 where
 "Δ:ce

  dmap :: "(u*τ ==> u*τ) ==> Δ ==> Δ" where
 "dsumes "atom z1 <sharp 
  "dmap f ((u,t)#\ΔΔ) = (f (u,t) #<Delta> (dmap f Δ ))"
 apply (simp add: eqvt_def dmap_graph_aux_def,auto )
 shows"(z1"(z1 bullet> e[z::=vz:: ((z1 \<leftrightarrow > v)]"
  (eqvt) by lexicographic_order

  subst_dv_iff:
 "Δ[x::=v]Delta\<lambda(tx::=v]\^su>τv)) Δ"
 by(induct Δ, auto)

  size_subst_dv [simp]: "size ( subst_dv G i x) size G"
 by (induct G,auto)

  forget_subst_dv [simp]: duct e rule:ce.strong_induct)
 duct Gato)
 using fresh_DCons fresh_PairD(1) not_self_fresh apply fastforce
  (simp add: fresh_DCons)+ )+
 done

  subst_dvget_s[simp: aom x simp]] "ubst_v (V_a ) = a"
  "(u,\>)
java.lang.NullPointerException
java.lang.NullPointerException

  fresh_subst_dv:
 fixes x::x
 assumes "atom xa "
 shows "atom xa Δ[x::=v]\<|  
 using assms proof(induct Δ rule:Δ_induct)
  DNil
 bst_v_flip_eq_two:
  "(cz1::=b]\^sv) = (c2[z2::=b]subst_cvbst_cv (C_d 1 c2c2) xx v _ (subs_vc x v ) (subst_cv c2 x v )"
 
 then show ?case usingsubx v = C_imp (subst_ c1 v c1x v (ubstc c2v )"java.lang.StringIndexOutOfBoundsException: Index 77 out of bounds for length 77
 thus ?esi sn suubtv_simple_commte fehod4 metis

  fr "( (subsb c x )"
 fixes j::atom and i::x and x::v and t::Δ
 "
 shows "(j slso ". = c1[1::=['\^ssup>>v]\<^                     applyValues

  assms proo(induct t rule: Δ
 Niljava.lang.StringIndexOutOfBoundsException: Index 11 out of bounds for length 11
 then show ?case using subst_gv.si by(auto s:evt_def sb_vv_g
 
 case (DCons u' t' DD')
 then show ?case unfolding subst_dv.simps using fresh_DCons fresh_su
 

java.lang.NullPointerException

 
java.lang.NullPointerException

  "case_sum (λ(ase_su<.Inl
 bst_svv : "s \\ x ==> v ==>
 and subst_branchv 🚫v"
 ubst_branchlv :"nch \Rightarrow> x ==> br
  (A_val v') ) x v = (A
  "atom y proof
  "atom y subst_v by ( (nominal_induct A avooiding: a x rrule: ng_indut, aut imp: f)
java.lang.NullPointerException
  "subst_sv (AS_assign y v') x v = AS_assign y (subst_vv v' x v )"
  (AS_if v' s1 s2)) ) x v = (AS_if_if (subbstvv v' x v ) (subst_ss xx v ) (subst_svs2 x v ) ))"  
  "atom u subst_sv (AS_var u τ (subst_tv τx v ) (subst_vv v' x v ) (ust_sv s x v ) "
 )x = A_hle (s(us_v s1 x ) (sub)"
  "subst_sv (AS_seq s1 s2) x v = AS_seq(us_vs x v) (subt_sv s2 x v "
  (AS_assert c s) x v AS_(sust_cv c x v) (sst_sv sx v)"
 ection \openExpressions


 t_branchlv (AS_final c) v=A_finanal (subst_branhv c "
 bst_branchlv (AS_c
 apply (auto,sx v = ( (Eo op s_vv1 x v ) (sutvv xv ) )"
java.lang.NullPointerException

 have eqvt"< st,ong_indc sp add:pure_fres)+)
 eqvt_at (λa. projl (subst_sv_subst_branchv_subst_branchlv_sumC (Inl a))) (s, xa, va)"
 apply(simp add: eqvt_at_def)
 apply(rule)
 apply(subst Projl_permute)
 apply(thiin_ta+
 apply (simp add: subst_sv_subst_branchv
 
 apply (case_tac "Ex1Inl (s,,xava)))")
 lemma sizsimp]: ize ( subst_v A ix = size AA"
 
  simp: feha_base)
 apply simp
 apply(cases rule: subst_sv_subst_branchv_subst_branchlv_graph.cases)
 apply(assumption)
 apply(rule_tac x="Sum_Type.projl x" in exI,clarify,rule the1_equality,blast,simp (no_asm) only: sum.sel)+
 lemma ubst_e [simp]: "subst_ev A a (V_var a) a) = A"

 apply(simp)+
 done

 { 
  java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 21
 then show ?case proof(cases x')
 case (Inl a) thus P
java.lang.StringIndexOutOfBoundsException: Index 35 out of bounds for length 20
 e(e aa bbcc
 trong_exhaust ng_ehau fesh_sta_net by ts
java.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
 next
 case (Inr b) thus P
 proof(cases b)
 case (Inl a) thus P proof(cases a)
 case (fields aa bb cc)
 en show ?thesis u usi Inr InInl l 1 s_brancbanch_lis.stongg_ehas fresh_s_ins byy metis
 qed
 

 case (fields aa bb cc)
  ?hsis usin n Inr2 s "((y \\leftrightarrow> x) v"
 qed
 qed
 qed
 next
 case (2 y s ya xa va sa c)
 thus ?case using eqvt_triple eqvt_at_proj by blast
 next
 case 3 y 2 yax asa s2 )
 thus ?case u
 next
 =ub_v
  j::atm and i::x and x x::v and
 using fresh_Pair u_fresh_xvby auto
 ultimatelyfix :x and t:ead x:v
 next
 x1 1 x1a xa va s1a c)
 thus sho subst_ m a (a (V_vara) =tsing sub_v_id us___def b
 }how p t1) (p "ubst_v = ubs
 
 qvt by eioric_oder

 
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 where
 ^ub>v \equiv stsv s xs x v"

 
 subst_branchv_abbrev :: "> z1)
 where
 >s subst_branchv s x v"

  \<>Expressions
  B and and C avoig ulesac__branch_list.stron_indu f a::xx adt::c and ::

  "sub ( (CE_len v' v')) v = CE_len (subst_cev v' x v )"
 by (nominal_induct A and B and C avoiding: a x rule: s_branch_sux_

  subst_sv_id [simp]: "subst_sv A a (V_var a) = A" and "subst_branchv B a (V_var a
  C aviding: rule: s_branchs_branch_list.strog_iut)
 case (A
 then shohow ?casse
 by (metis (no_types, "[:='\^sub>ev

 case (AS_match v branch_s)
 t_None_eq sbt_ev_id subts.simps sbst_sv.ps subst_ttv_id v.fresh ust_vv_id sh "subst_v t a(V_V_ar a) = sing subst_cvv_id subst_v_c_def by simp 
 by metis
 (auto)q

  fresh_subst_sv_if_rl:
 shows
 "( freshre
 
 "(atom x <>subst_v
 apply(nominal_induct s and cs and css avoiding: v x rule: s_branch_s_branch_list.strong_induct)
 using pu

java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 27
 shows "j
 "j
  (subst_branchlv css x v ) ==>
  " (y \<leftrightarrow :x an c::c and z::x
 branch list x s )
java.lang.NullPointerException
 
 s tosimpdd: pere_psub)+
 es atom cv =
  -
 y e s) x v = (AS_let y e s')" forget_subst_by simp
 hence "j (AS_let y e s')" using AS_let by argo
 show ?thesis Tru by blast
 next
 case False
 
java.lang.NullPointerException
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 then show ?thesis using AS_let fresh_None fresh_subst_ev_if list.discI list.set_cases srnhsbrn
  fix a:x and tm::ce

 
 case (AS_let2 y τ s1 s2)
 thus ?case proof(1::x and v::v and :c
 case True
 using subst_cev_commute subst_v_ce_ef by s bysimp 
 show atom x c ==> z)
 then show ?thesis using True by blast

java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 have "subst_> y)
 then show ?thesis using AS_let2
 sh_subst_tv_ifsub st_tvtv_iif listst.discI s.set_cases s_branchbranchit.freresh(etiassms)
  <>  z1') e[z::=v]esub> f c::
 uto)+

  fresh_subst_sv_if[simp]:
  x::xnd v::v
 shows "j (C_false) x v= C_false"
 " "ubst e = 2 x = ((subst_ e1 x v )= (substcev e2x
 ng rssubstsv_if_lr freh_sub by metis+

 
  A::sadt::v an x and i
 atom j\<harp thenr [simp]: "atom a
 "atom j
 atom j \>Lo> (subst_branchlv (subst_branchlv C i t) j u ) = subst_branchlv C i (subst_vv t ju )
 apply(nominal_induct A and B and C avoiding: i j t u rule: s_branch_s_branch_list.strong_induct)
 (auto simp: fresh_at_base)

 
 assumes " case 3
 shows "{size [simp]: "size e ?th?thesis using assms auto
 using τ
 by (metis Nominal2_Base.swa

  subst_sv_flip:
 fixes s::s and sa::s and v'::v
 assumes "atom c \<sharp( (v',x, xa, s, sa)" "atom x v'" and "(x \leftrightarrow c) c)
java.lang.NullPointerException

 have "atom x
  "a "atmc sharp> (s[x::=v'<^sub>v, sa[xa::=v']v)" using assms using fresh_subst_sv_if assms by( blast+ ,force)

 hence "s[x::=v'] subst_v t i x) = ((atom i j x ( \\sh> t j = atom i)))"
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 ve "... = ((xa \< ca by p
 also have "... = ((xa c) sa)[ ((xa xa) ::= ((xa v') ]v" using assms
 by (mets flii_tsimps(1 flip_feh_freshfresh_PairD()
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 also ave "... = sax:=']\^>sssmsms breshfresh resh_Pair)
 finally show ?thesis by simp
 

  if_type_eq:
java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 3
 assumesshows "((x \<leftrightarrow =v]\^sub>c>v"
java.lang.NullPointerException
 shows "({
  -
 have "atom z1' v]c\<>v
 moreover hence "(CE_val v == CE_val (V_lit ll) IMP ca[za::=[z1']\<  showsv = c[z::=[z1']using assms subst_v_c_def by by auto
 proof -
 have " consid "z1' = z" | "z1 = z "tom z1 subst_cv_commute:
 by auto
 also have "... = ((CE_val v == CE_val (V_lit ll)) IMP ((z1'
 using uto
 by (metis (mono_tags) subt_cflip[sp]:
 also have "... = ((CE_val v == CE_val (V_lit ll)) IMP (ca[zs "c[z::=w]\^sub>c🚫
 using assms by fastforce
 finally show ?thesis by auto
 qed
 ultimately show ?thesis
 using \   "atom z w" and "xz"
java.lang.NullPointerException
 

  subst_sv_var_flip:
 fixes x::x and s::s and z::x
java.lang.NullPointerException
java.lang.NullPointerException
 "atom x
 apply(nominal_induct s and cs and css avoiding: z x rule: s_branch_s_branch_list.strong_induct)
 using ext
              apply (auto  ) (* This unpacks subst, perm *)

  ubst_tv_var_flip
    subst_v___java.lang.StringIndexOutOfBoundsException: Index 65 out of bounds for length 65
     defer
  gsub<Gamma> subst_gv g x v"

    defer 1

  using x_fresh_u apply blast

   defer 1

  using x_fresh_u Ab

   apply (simp add: subst_v_c_def)

  using x_fresh_u Abs1_eq_iff'(3) flip_fresh_fresh

  by (simp add: flip_fresh_fresh)


instantiationapply (inuct Gz1 \<> 

begin


definition
  "subst_v

instance
  fix j: vnd
  show  java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 6
    using 

  fix a::x and tm
    <> =tm
    usingst_sv

  fix a::x and tm:s
howt_v V_var bst_sv_idyp

   p::perm and x1::x and v::v and t1::s
  showbullet subst_v t1 x1 v  = _p\>
       subst_v_s_def

  fix x:x:sdx
  show "atom ed
    using subst_sv_var_flip subst_v_s_def by simp


  show "atom>c ==>v]java.lang.NullPointerException
      subst_v_s_def simp
qedbyo:t_def)
end

sectionz  andand  aandvca b:

nominal_function subst_ft_v :: "fun_typ ==> v ==>
  atom z <sharp> (x,v) <Longrightarrow> subst_ft_v ( AF_fun_typ z b c t (s::s)) x v = AF_fun_typ z b c[x::=v]>\<>\
     apply(simp add: eqvt_def subst_ft_v_graph_aux_def ) )
    apply(simp add:fun_typ.strong_exhaust )
   apply(auto)
    apply(rule_tac y=a and c="(moreoverccccjava.lang.NullPointerException
    apply (auto

proof(goal_casesjava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  case  xaca
  hence  "c[
  (etis lp_comue sbt__vr_flip)
  hence "lemma imp"subst_tv bt_v A i x ) = siz A
  showcase)
    using _fip fip_mut by me
xt
  
  hence "t[byominal_induct:e<>trong_inductosimpbase
  hence  java.lang.NullPointerException
  then show ?case using subst_tv_commute_full 2
    by (metis atom_eq_iff fresh_atom fresh_atom_at_base v.fresh()
ed  then s ?case by byby(simpadd:evt_t_def subsst_gvv_gragrapph_aux_def )

nominal_termination (eqvt) by lexicographic_order

nominal_function subst_ftq_v :: "fun_typ_q x ==> fun_typ_q
  "atom bv _idc <tau> avoiding: y t
| "   andnd::τshowaseisNil_convprod_cases3ases3
       apply(simpdeqvt_defubst_ftq_v_graph_aux_def
      apply(simp add:fun_typ_q.strong_exhaust )
     apply( -
   apply_ac=aa fun_typ_qust
    apply    usingzyetisprod.ses
proofbreviation
  case (1 bva<> z" using zbc fresh_prod3 by force
subst_ft_vsimps ms by (simp add: flip_fresh__fresh)
qed
nominal_termination (eqvt) by lexicograpr

lemma size_subst_ft[simp]: "size (subst_ft_v A x v) = size A"
  by(nominal_induct A avoiding: x v ru[x::=V_var xa]\<^bcv }"  using subst_cv_v_flip  where 

lemmausing_rDself_freshshorce
  by

lemma subst_ft_id
 inal_inducting typrong_induct

instantiation fun_typ :as_subst_vv
begin

definition 
  "subst_v = subst_ft_v"

instance proof

  fix j:lemma size_subst_gv] "size ( subst_g G i x
  show "(j 
    apply(inal_inducttding xuleduct
    apply(simp only: subst_v_fun_typ_def subst_ft_v.simps )
usingtypesh_subst_v_if
    by auto

  fix a::andjava.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 0
grightarrowrrowsubst_v  
  (nominal_induct:rulerong_induct
    se_x1a java.lang.StringIndexOutOfBoundsException: Index 41 out of bounds for length 41
      applynductuto
  qed

  fix a: ndmn_typ
  showbst_vt_v )"
  proof(n fix x::x and c::::\tau>and z::x
    case (AF_fun_typ x1a x2a x3a x4a x5a)
java.lang.NullPointerException
  

  fix p::perm and x1::x and v::v an fix::x ad c:\tau and z::x
   " <ubst_v =t_v >)bullet(p\bullet"
  proof .strong_induct)
     2a45
    then show ?foldingst_v_fun_typ_defhusingsubst_v bst_ft_vimpsget_subst_svv_>def by fastforce
  qedubst_tv_commute_full

   :  _d:x
  show java.lang.NullPointerException
    case (T_efined_type x1x2a x3aa))
    by (a

java.lang.StringIndexOutOfBoundsException: Index 34 out of bounds for length 34
  show "atom   x'andc c,singses3
    apply(
    apply auto
    bysimp _st_v_s_defst_v__tau subst_v_fun_typ_def
qed
end

instantiation: as_subst_v
begin

definition 
  "subst_v = subst_ftq_v"

instanceef
  fix j::atomcaseatom<  GConsbyblast
  show  "(j
    plyninal_induct t at avoi: i x rule:fun_yp_.rong_induct,auto)
                   apply(auto simp add: subst_vfu_t_de us_vsubs_vv\tau>_def subst_v_fun_typ_q_dif )
bymetis (notpes) fesh_ubstv_ibstvfun_typ_def)+

i ad t::fun_typ__q and x::v
  show "atom \    ase
    apply(nominal_induct t avoiding: i x rule:fun_typ_q.strong_induct    then  ? using.()[of' Gnsxbcbymp
t_v_s_def>_def ubst_v_fun_typ_q_deffsubst_v_if

  fix:q
  showi
    moreoverflbrace x' : b | c' }
    simpddn_typ_defv_s_defst_v_τfixesx:: and:xandz:  c:: andd><>

  fixanddndp_q
  show "p subst_v t1 x1 v = subst_v (p tom x \<sharpsharpsup>v]\^>cma)"nd < Gamman\Gamma  "atom x \<sharp > (z, c)"
    applyngyp_qinduct
    by(auto simp addproof

  fix moreoverc_of z" usiei
  show "
    apply(nominal_inductlemmaf_fresh
    sumes sharp (t,z)"

  fix x::x and c::fun_typ_q an ::x
  show "atom x  z' : b_of  'rbrace atom z' 
    (al_inductdingfun_typ_q
    (todbst_v_fun_typ_defdefv_s_def<tau_def subst_v_fun_typ_q_def fresh_subst_v_if
    by (metist_v_fun_typ_def___celbst_ft_vubst_v_simple_commutevrm_simpsmps
qed

endshowusingmsst_v_if''"V_var z" "ubst_v_c_def bby metis

java.lang.NullPointerException

lemmaa subst_v_fst_eq:
  " ` setD (Δ[x::=v]\Δv) = fst ` setD Δ"
 by(induct Δn subst C ons_eqvt flip_freshres sing G_con_lip by smp

  subst_gv_member_iff:
 fixes x'::x
 assumes "(x',b',c') <in >"
 shows "(x',b',c'[x::=v] x]v" using subst_v_simple_commute subst_v_c_def assms c_oimps z *by mets
  -
 have "avassu\>z1 : b : b1 | c1 }b | c2 } zz1
 then show ?thesis using assms proof(induct Γshows "c1[z1[z1:=v]\c=2" and "c1 = (z c2"
  GNil
 then show ?case by auto
 next
 case (GCons x1 b1 c1 Γ')
 eroof(cases "(x'b,' x,1,c1)")

java.lang.NullPointerException
 then show ?thesis using True by auto
 next Types\close
 case False
 have "x1.eq_iff Abs1_eq_iff[of z1 c1 z2 2 asss by bla> v \Rightarrowτ
 hence "(x', b', c') cc🚫 z1 : b1 | c1 } z2 : 2}
 moreover have "atom x mdm Γ feshGCns
 ultimately have "(x', b', c'[x::=v]Pa aa show "c1[z1:v]<sb>c\subv" using type_eqsuseq assmss bllast
 ' c[:=]\>toSet ((x1, b1, c1[x::=v]v) #Gamma> (Γ'[x::=v]v))" by auto
 then show ?thesis using subst_gv.simps fresh_at_basees_at_bas)
 qed
 qed
 

 resh_subst_gv_if:
 fixes j::atom and i::x and x::v and
 assumes "j t j x"
 shows "(j subst_gv t i x)"
 using assms proof(induct t rule: Γ_induct)
 case GNil
 then show ?case using subst_gv.simps fresh_GNil by auto
 
 case (GCons x' b' c' Γ')
 then show ?case unfolding subst_gv.simps using fresh_GCons fresh_subst_cv_if by auto
 

  a6: "cb " a "atom cb "z

  set_GConsD: "y c(Tefined_tytyexa 3
 o

 
 assumes c"
java.lang.NullPointerException
 using subst_gv.simps append_g.simps assms by auto

 

Messung V0.5 in Prozent
C=41 H=-54 G=47

¤ Dauer der Verarbeitung: 0.32 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen



NIST Cobol Testsuite



Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

      Eigene Quellcodes
      Fremde Quellcodes
     Quellcodebibliothek
      Suchen

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge