src/CCL/CCL.thy
changeset 62143 3c9a0985e6be
parent 62020 5d208fd2507d
child 63120 629a4c5e953e
equal deleted inserted replaced
62122:eed7ca453573 62143:3c9a0985e6be
   318   apply (unfold POgen_def SIM_def)
   318   apply (unfold POgen_def SIM_def)
   319   apply (rule monoI)
   319   apply (rule monoI)
   320   apply blast
   320   apply blast
   321   done
   321   done
   322 
   322 
   323 lemma POgenXH: 
   323 lemma POgenXH:
   324   "<t,t'> : POgen(R) \<longleftrightarrow> t= bot | (t=true \<and> t'=true)  | (t=false \<and> t'=false) |  
   324   "<t,t'> : POgen(R) \<longleftrightarrow> t= bot | (t=true \<and> t'=true)  | (t=false \<and> t'=false) |
   325            (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> <a,a'> : R \<and> <b,b'> : R) |  
   325            (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> <a,a'> : R \<and> <b,b'> : R) |
   326            (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x. <f(x),f'(x)> : R))"
   326            (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x. <f(x),f'(x)> : R))"
   327   apply (unfold POgen_def SIM_def)
   327   apply (unfold POgen_def SIM_def)
   328   apply (rule iff_refl [THEN XHlemma2])
   328   apply (rule iff_refl [THEN XHlemma2])
   329   done
   329   done
   330 
   330 
   331 lemma poXH: 
   331 lemma poXH:
   332   "t [= t' \<longleftrightarrow> t=bot | (t=true \<and> t'=true) | (t=false \<and> t'=false) |  
   332   "t [= t' \<longleftrightarrow> t=bot | (t=true \<and> t'=true) | (t=false \<and> t'=false) |
   333                  (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> a [= a' \<and> b [= b') |  
   333                  (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> a [= a' \<and> b [= b') |
   334                  (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x. f(x) [= f'(x)))"
   334                  (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x. f(x) [= f'(x)))"
   335   apply (simp add: PO_iff del: ex_simps)
   335   apply (simp add: PO_iff del: ex_simps)
   336   apply (rule POgen_mono
   336   apply (rule POgen_mono
   337     [THEN PO_def [THEN def_gfp_Tarski], THEN XHlemma1, unfolded POgen_def SIM_def])
   337     [THEN PO_def [THEN def_gfp_Tarski], THEN XHlemma1, unfolded POgen_def SIM_def])
   338   apply (rule iff_refl [THEN XHlemma2])
   338   apply (rule iff_refl [THEN XHlemma2])
   436   apply (unfold EQgen_def SIM_def)
   436   apply (unfold EQgen_def SIM_def)
   437   apply (rule monoI)
   437   apply (rule monoI)
   438   apply blast
   438   apply blast
   439   done
   439   done
   440 
   440 
   441 lemma EQgenXH: 
   441 lemma EQgenXH:
   442   "<t,t'> : EQgen(R) \<longleftrightarrow> (t=bot \<and> t'=bot)  | (t=true \<and> t'=true)  |  
   442   "<t,t'> : EQgen(R) \<longleftrightarrow> (t=bot \<and> t'=bot)  | (t=true \<and> t'=true)  |
   443                                              (t=false \<and> t'=false) |  
   443                                              (t=false \<and> t'=false) |
   444                  (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> <a,a'> : R \<and> <b,b'> : R) |  
   444                  (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> <a,a'> : R \<and> <b,b'> : R) |
   445                  (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x.<f(x),f'(x)> : R))"
   445                  (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x.<f(x),f'(x)> : R))"
   446   apply (unfold EQgen_def SIM_def)
   446   apply (unfold EQgen_def SIM_def)
   447   apply (rule iff_refl [THEN XHlemma2])
   447   apply (rule iff_refl [THEN XHlemma2])
   448   done
   448   done
   449 
   449 
   450 lemma eqXH: 
   450 lemma eqXH:
   451   "t=t' \<longleftrightarrow> (t=bot \<and> t'=bot)  | (t=true \<and> t'=true)  | (t=false \<and> t'=false) |  
   451   "t=t' \<longleftrightarrow> (t=bot \<and> t'=bot)  | (t=true \<and> t'=true)  | (t=false \<and> t'=false) |
   452                      (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> a=a' \<and> b=b') |  
   452                      (EX a a' b b'. t=<a,b> \<and> t'=<a',b'>  \<and> a=a' \<and> b=b') |
   453                      (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x. f(x)=f'(x)))"
   453                      (EX f f'. t=lam x. f(x) \<and> t'=lam x. f'(x) \<and> (ALL x. f(x)=f'(x)))"
   454   apply (subgoal_tac "<t,t'> : EQ \<longleftrightarrow>
   454   apply (subgoal_tac "<t,t'> : EQ \<longleftrightarrow>
   455     (t=bot \<and> t'=bot) | (t=true \<and> t'=true) | (t=false \<and> t'=false) |
   455     (t=bot \<and> t'=bot) | (t=true \<and> t'=true) | (t=false \<and> t'=false) |
   456     (EX a a' b b'. t=<a,b> \<and> t'=<a',b'> \<and> <a,a'> : EQ \<and> <b,b'> : EQ) |
   456     (EX a a' b b'. t=<a,b> \<and> t'=<a',b'> \<and> <a,a'> : EQ \<and> <b,b'> : EQ) |
   457     (EX f f'. t=lam x. f (x) \<and> t'=lam x. f' (x) \<and> (ALL x. <f (x) ,f' (x) > : EQ))")
   457     (EX f f'. t=lam x. f (x) \<and> t'=lam x. f' (x) \<and> (ALL x. <f (x) ,f' (x) > : EQ))")