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))") |