src/HOL/Nominal/Examples/Class.thy
changeset 26806 40b411ec05aa
parent 26648 25c07f3878b0
child 26932 c398a3866082
equal deleted inserted replaced
26805:27941d7d9a11 26806:40b411ec05aa
 10315 done
 10315 done
 10316 
 10316 
 10317 lemma NOTRIGHT_eqvt_name:
 10317 lemma NOTRIGHT_eqvt_name:
 10318   fixes pi::"name prm"
 10318   fixes pi::"name prm"
 10319   shows "(pi\<bullet>(NOTRIGHT (NOT B) X)) = NOTRIGHT (NOT B) (pi\<bullet>X)"
 10319   shows "(pi\<bullet>(NOTRIGHT (NOT B) X)) = NOTRIGHT (NOT B) (pi\<bullet>X)"
 10320 apply(auto simp add: perm_set_def)
 10320 apply(auto simp add: perm_set_eq)
 10321 apply(rule_tac x="pi\<bullet>a" in exI) 
 10321 apply(rule_tac x="pi\<bullet>a" in exI) 
 10322 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10322 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10323 apply(rule_tac x="pi\<bullet>M" in exI)
 10323 apply(rule_tac x="pi\<bullet>M" in exI)
 10324 apply(simp)
 10324 apply(simp)
 10325 apply(rule conjI)
 10325 apply(rule conjI)
 10341 done
 10341 done
 10342 
 10342 
 10343 lemma NOTRIGHT_eqvt_coname:
 10343 lemma NOTRIGHT_eqvt_coname:
 10344   fixes pi::"coname prm"
 10344   fixes pi::"coname prm"
 10345   shows "(pi\<bullet>(NOTRIGHT (NOT B) X)) = NOTRIGHT (NOT B) (pi\<bullet>X)"
 10345   shows "(pi\<bullet>(NOTRIGHT (NOT B) X)) = NOTRIGHT (NOT B) (pi\<bullet>X)"
 10346 apply(auto simp add: perm_set_def)
 10346 apply(auto simp add: perm_set_eq)
 10347 apply(rule_tac x="pi\<bullet>a" in exI) 
 10347 apply(rule_tac x="pi\<bullet>a" in exI) 
 10348 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10348 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10349 apply(rule_tac x="pi\<bullet>M" in exI)
 10349 apply(rule_tac x="pi\<bullet>M" in exI)
 10350 apply(simp)
 10350 apply(simp)
 10351 apply(rule conjI)
 10351 apply(rule conjI)
 10375 done
 10375 done
 10376 
 10376 
 10377 lemma NOTLEFT_eqvt_name:
 10377 lemma NOTLEFT_eqvt_name:
 10378   fixes pi::"name prm"
 10378   fixes pi::"name prm"
 10379   shows "(pi\<bullet>(NOTLEFT (NOT B) X)) = NOTLEFT (NOT B) (pi\<bullet>X)"
 10379   shows "(pi\<bullet>(NOTLEFT (NOT B) X)) = NOTLEFT (NOT B) (pi\<bullet>X)"
 10380 apply(auto simp add: perm_set_def)
 10380 apply(auto simp add: perm_set_eq)
 10381 apply(rule_tac x="pi\<bullet>a" in exI) 
 10381 apply(rule_tac x="pi\<bullet>a" in exI) 
 10382 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10382 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10383 apply(rule_tac x="pi\<bullet>M" in exI)
 10383 apply(rule_tac x="pi\<bullet>M" in exI)
 10384 apply(simp)
 10384 apply(simp)
 10385 apply(rule conjI)
 10385 apply(rule conjI)
 10401 done
 10401 done
 10402 
 10402 
 10403 lemma NOTLEFT_eqvt_coname:
 10403 lemma NOTLEFT_eqvt_coname:
 10404   fixes pi::"coname prm"
 10404   fixes pi::"coname prm"
 10405   shows "(pi\<bullet>(NOTLEFT (NOT B) X)) = NOTLEFT (NOT B) (pi\<bullet>X)"
 10405   shows "(pi\<bullet>(NOTLEFT (NOT B) X)) = NOTLEFT (NOT B) (pi\<bullet>X)"
 10406 apply(auto simp add: perm_set_def)
 10406 apply(auto simp add: perm_set_eq)
 10407 apply(rule_tac x="pi\<bullet>a" in exI) 
 10407 apply(rule_tac x="pi\<bullet>a" in exI) 
 10408 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10408 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10409 apply(rule_tac x="pi\<bullet>M" in exI)
 10409 apply(rule_tac x="pi\<bullet>M" in exI)
 10410 apply(simp)
 10410 apply(simp)
 10411 apply(rule conjI)
 10411 apply(rule conjI)
 10436 done
 10436 done
 10437 
 10437 
 10438 lemma ANDRIGHT_eqvt_name:
 10438 lemma ANDRIGHT_eqvt_name:
 10439   fixes pi::"name prm"
 10439   fixes pi::"name prm"
 10440   shows "(pi\<bullet>(ANDRIGHT (A AND B) X Y)) = ANDRIGHT (A AND B) (pi\<bullet>X) (pi\<bullet>Y)"
 10440   shows "(pi\<bullet>(ANDRIGHT (A AND B) X Y)) = ANDRIGHT (A AND B) (pi\<bullet>X) (pi\<bullet>Y)"
 10441 apply(auto simp add: perm_set_def)
 10441 apply(auto simp add: perm_set_eq)
 10442 apply(rule_tac x="pi\<bullet>c" in exI)
 10442 apply(rule_tac x="pi\<bullet>c" in exI)
 10443 apply(rule_tac x="pi\<bullet>a" in exI)
 10443 apply(rule_tac x="pi\<bullet>a" in exI)
 10444 apply(rule_tac x="pi\<bullet>b" in exI)
 10444 apply(rule_tac x="pi\<bullet>b" in exI)
 10445 apply(rule_tac x="pi\<bullet>M" in exI)
 10445 apply(rule_tac x="pi\<bullet>M" in exI)
 10446 apply(rule_tac x="pi\<bullet>N" in exI)
 10446 apply(rule_tac x="pi\<bullet>N" in exI)
 10471 done
 10471 done
 10472 
 10472 
 10473 lemma ANDRIGHT_eqvt_coname:
 10473 lemma ANDRIGHT_eqvt_coname:
 10474   fixes pi::"coname prm"
 10474   fixes pi::"coname prm"
 10475   shows "(pi\<bullet>(ANDRIGHT (A AND B) X Y)) = ANDRIGHT (A AND B) (pi\<bullet>X) (pi\<bullet>Y)"
 10475   shows "(pi\<bullet>(ANDRIGHT (A AND B) X Y)) = ANDRIGHT (A AND B) (pi\<bullet>X) (pi\<bullet>Y)"
 10476 apply(auto simp add: perm_set_def)
 10476 apply(auto simp add: perm_set_eq)
 10477 apply(rule_tac x="pi\<bullet>c" in exI)
 10477 apply(rule_tac x="pi\<bullet>c" in exI)
 10478 apply(rule_tac x="pi\<bullet>a" in exI)
 10478 apply(rule_tac x="pi\<bullet>a" in exI)
 10479 apply(rule_tac x="pi\<bullet>b" in exI)
 10479 apply(rule_tac x="pi\<bullet>b" in exI)
 10480 apply(rule_tac x="pi\<bullet>M" in exI)
 10480 apply(rule_tac x="pi\<bullet>M" in exI)
 10481 apply(rule_tac x="pi\<bullet>N" in exI)
 10481 apply(rule_tac x="pi\<bullet>N" in exI)
 10514 done
 10514 done
 10515 
 10515 
 10516 lemma ANDLEFT1_eqvt_name:
 10516 lemma ANDLEFT1_eqvt_name:
 10517   fixes pi::"name prm"
 10517   fixes pi::"name prm"
 10518   shows "(pi\<bullet>(ANDLEFT1 (A AND B) X)) = ANDLEFT1 (A AND B) (pi\<bullet>X)"
 10518   shows "(pi\<bullet>(ANDLEFT1 (A AND B) X)) = ANDLEFT1 (A AND B) (pi\<bullet>X)"
 10519 apply(auto simp add: perm_set_def)
 10519 apply(auto simp add: perm_set_eq)
 10520 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10520 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10521 apply(rule_tac x="pi\<bullet>y" in exI) 
 10521 apply(rule_tac x="pi\<bullet>y" in exI) 
 10522 apply(rule_tac x="pi\<bullet>M" in exI)
 10522 apply(rule_tac x="pi\<bullet>M" in exI)
 10523 apply(simp)
 10523 apply(simp)
 10524 apply(rule conjI)
 10524 apply(rule conjI)
 10540 done
 10540 done
 10541 
 10541 
 10542 lemma ANDLEFT1_eqvt_coname:
 10542 lemma ANDLEFT1_eqvt_coname:
 10543   fixes pi::"coname prm"
 10543   fixes pi::"coname prm"
 10544   shows "(pi\<bullet>(ANDLEFT1 (A AND B) X)) = ANDLEFT1 (A AND B) (pi\<bullet>X)"
 10544   shows "(pi\<bullet>(ANDLEFT1 (A AND B) X)) = ANDLEFT1 (A AND B) (pi\<bullet>X)"
 10545 apply(auto simp add: perm_set_def)
 10545 apply(auto simp add: perm_set_eq)
 10546 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10546 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10547 apply(rule_tac x="pi\<bullet>y" in exI) 
 10547 apply(rule_tac x="pi\<bullet>y" in exI) 
 10548 apply(rule_tac x="pi\<bullet>M" in exI)
 10548 apply(rule_tac x="pi\<bullet>M" in exI)
 10549 apply(simp)
 10549 apply(simp)
 10550 apply(rule conjI)
 10550 apply(rule conjI)
 10574 done
 10574 done
 10575 
 10575 
 10576 lemma ANDLEFT2_eqvt_name:
 10576 lemma ANDLEFT2_eqvt_name:
 10577   fixes pi::"name prm"
 10577   fixes pi::"name prm"
 10578   shows "(pi\<bullet>(ANDLEFT2 (A AND B) X)) = ANDLEFT2 (A AND B) (pi\<bullet>X)"
 10578   shows "(pi\<bullet>(ANDLEFT2 (A AND B) X)) = ANDLEFT2 (A AND B) (pi\<bullet>X)"
 10579 apply(auto simp add: perm_set_def)
 10579 apply(auto simp add: perm_set_eq)
 10580 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10580 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10581 apply(rule_tac x="pi\<bullet>y" in exI) 
 10581 apply(rule_tac x="pi\<bullet>y" in exI) 
 10582 apply(rule_tac x="pi\<bullet>M" in exI)
 10582 apply(rule_tac x="pi\<bullet>M" in exI)
 10583 apply(simp)
 10583 apply(simp)
 10584 apply(rule conjI)
 10584 apply(rule conjI)
 10600 done
 10600 done
 10601 
 10601 
 10602 lemma ANDLEFT2_eqvt_coname:
 10602 lemma ANDLEFT2_eqvt_coname:
 10603   fixes pi::"coname prm"
 10603   fixes pi::"coname prm"
 10604   shows "(pi\<bullet>(ANDLEFT2 (A AND B) X)) = ANDLEFT2 (A AND B) (pi\<bullet>X)"
 10604   shows "(pi\<bullet>(ANDLEFT2 (A AND B) X)) = ANDLEFT2 (A AND B) (pi\<bullet>X)"
 10605 apply(auto simp add: perm_set_def)
 10605 apply(auto simp add: perm_set_eq)
 10606 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10606 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10607 apply(rule_tac x="pi\<bullet>y" in exI) 
 10607 apply(rule_tac x="pi\<bullet>y" in exI) 
 10608 apply(rule_tac x="pi\<bullet>M" in exI)
 10608 apply(rule_tac x="pi\<bullet>M" in exI)
 10609 apply(simp)
 10609 apply(simp)
 10610 apply(rule conjI)
 10610 apply(rule conjI)
 10635 done
 10635 done
 10636 
 10636 
 10637 lemma ORLEFT_eqvt_name:
 10637 lemma ORLEFT_eqvt_name:
 10638   fixes pi::"name prm"
 10638   fixes pi::"name prm"
 10639   shows "(pi\<bullet>(ORLEFT (A OR B) X Y)) = ORLEFT (A OR B) (pi\<bullet>X) (pi\<bullet>Y)"
 10639   shows "(pi\<bullet>(ORLEFT (A OR B) X Y)) = ORLEFT (A OR B) (pi\<bullet>X) (pi\<bullet>Y)"
 10640 apply(auto simp add: perm_set_def)
 10640 apply(auto simp add: perm_set_eq)
 10641 apply(rule_tac x="pi\<bullet>xb" in exI)
 10641 apply(rule_tac x="pi\<bullet>xb" in exI)
 10642 apply(rule_tac x="pi\<bullet>y" in exI)
 10642 apply(rule_tac x="pi\<bullet>y" in exI)
 10643 apply(rule_tac x="pi\<bullet>z" in exI)
 10643 apply(rule_tac x="pi\<bullet>z" in exI)
 10644 apply(rule_tac x="pi\<bullet>M" in exI)
 10644 apply(rule_tac x="pi\<bullet>M" in exI)
 10645 apply(rule_tac x="pi\<bullet>N" in exI)
 10645 apply(rule_tac x="pi\<bullet>N" in exI)
 10670 done
 10670 done
 10671 
 10671 
 10672 lemma ORLEFT_eqvt_coname:
 10672 lemma ORLEFT_eqvt_coname:
 10673   fixes pi::"coname prm"
 10673   fixes pi::"coname prm"
 10674   shows "(pi\<bullet>(ORLEFT (A OR B) X Y)) = ORLEFT (A OR B) (pi\<bullet>X) (pi\<bullet>Y)"
 10674   shows "(pi\<bullet>(ORLEFT (A OR B) X Y)) = ORLEFT (A OR B) (pi\<bullet>X) (pi\<bullet>Y)"
 10675 apply(auto simp add: perm_set_def)
 10675 apply(auto simp add: perm_set_eq)
 10676 apply(rule_tac x="pi\<bullet>xb" in exI)
 10676 apply(rule_tac x="pi\<bullet>xb" in exI)
 10677 apply(rule_tac x="pi\<bullet>y" in exI)
 10677 apply(rule_tac x="pi\<bullet>y" in exI)
 10678 apply(rule_tac x="pi\<bullet>z" in exI)
 10678 apply(rule_tac x="pi\<bullet>z" in exI)
 10679 apply(rule_tac x="pi\<bullet>M" in exI)
 10679 apply(rule_tac x="pi\<bullet>M" in exI)
 10680 apply(rule_tac x="pi\<bullet>N" in exI)
 10680 apply(rule_tac x="pi\<bullet>N" in exI)
 10713 done
 10713 done
 10714 
 10714 
 10715 lemma ORRIGHT1_eqvt_name:
 10715 lemma ORRIGHT1_eqvt_name:
 10716   fixes pi::"name prm"
 10716   fixes pi::"name prm"
 10717   shows "(pi\<bullet>(ORRIGHT1 (A OR B) X)) = ORRIGHT1 (A OR B) (pi\<bullet>X)"
 10717   shows "(pi\<bullet>(ORRIGHT1 (A OR B) X)) = ORRIGHT1 (A OR B) (pi\<bullet>X)"
 10718 apply(auto simp add: perm_set_def)
 10718 apply(auto simp add: perm_set_eq)
 10719 apply(rule_tac x="pi\<bullet>a" in exI) 
 10719 apply(rule_tac x="pi\<bullet>a" in exI) 
 10720 apply(rule_tac x="pi\<bullet>b" in exI) 
 10720 apply(rule_tac x="pi\<bullet>b" in exI) 
 10721 apply(rule_tac x="pi\<bullet>M" in exI)
 10721 apply(rule_tac x="pi\<bullet>M" in exI)
 10722 apply(simp)
 10722 apply(simp)
 10723 apply(rule conjI)
 10723 apply(rule conjI)
 10739 done
 10739 done
 10740 
 10740 
 10741 lemma ORRIGHT1_eqvt_coname:
 10741 lemma ORRIGHT1_eqvt_coname:
 10742   fixes pi::"coname prm"
 10742   fixes pi::"coname prm"
 10743   shows "(pi\<bullet>(ORRIGHT1 (A OR B) X)) = ORRIGHT1 (A OR B) (pi\<bullet>X)"
 10743   shows "(pi\<bullet>(ORRIGHT1 (A OR B) X)) = ORRIGHT1 (A OR B) (pi\<bullet>X)"
 10744 apply(auto simp add: perm_set_def)
 10744 apply(auto simp add: perm_set_eq)
 10745 apply(rule_tac x="pi\<bullet>a" in exI) 
 10745 apply(rule_tac x="pi\<bullet>a" in exI) 
 10746 apply(rule_tac x="pi\<bullet>b" in exI) 
 10746 apply(rule_tac x="pi\<bullet>b" in exI) 
 10747 apply(rule_tac x="pi\<bullet>M" in exI)
 10747 apply(rule_tac x="pi\<bullet>M" in exI)
 10748 apply(simp)
 10748 apply(simp)
 10749 apply(rule conjI)
 10749 apply(rule conjI)
 10773 done
 10773 done
 10774 
 10774 
 10775 lemma ORRIGHT2_eqvt_name:
 10775 lemma ORRIGHT2_eqvt_name:
 10776   fixes pi::"name prm"
 10776   fixes pi::"name prm"
 10777   shows "(pi\<bullet>(ORRIGHT2 (A OR B) X)) = ORRIGHT2 (A OR B) (pi\<bullet>X)"
 10777   shows "(pi\<bullet>(ORRIGHT2 (A OR B) X)) = ORRIGHT2 (A OR B) (pi\<bullet>X)"
 10778 apply(auto simp add: perm_set_def)
 10778 apply(auto simp add: perm_set_eq)
 10779 apply(rule_tac x="pi\<bullet>a" in exI) 
 10779 apply(rule_tac x="pi\<bullet>a" in exI) 
 10780 apply(rule_tac x="pi\<bullet>b" in exI) 
 10780 apply(rule_tac x="pi\<bullet>b" in exI) 
 10781 apply(rule_tac x="pi\<bullet>M" in exI)
 10781 apply(rule_tac x="pi\<bullet>M" in exI)
 10782 apply(simp)
 10782 apply(simp)
 10783 apply(rule conjI)
 10783 apply(rule conjI)
 10799 done
 10799 done
 10800 
 10800 
 10801 lemma ORRIGHT2_eqvt_coname:
 10801 lemma ORRIGHT2_eqvt_coname:
 10802   fixes pi::"coname prm"
 10802   fixes pi::"coname prm"
 10803   shows "(pi\<bullet>(ORRIGHT2 (A OR B) X)) = ORRIGHT2 (A OR B) (pi\<bullet>X)"
 10803   shows "(pi\<bullet>(ORRIGHT2 (A OR B) X)) = ORRIGHT2 (A OR B) (pi\<bullet>X)"
 10804 apply(auto simp add: perm_set_def)
 10804 apply(auto simp add: perm_set_eq)
 10805 apply(rule_tac x="pi\<bullet>a" in exI) 
 10805 apply(rule_tac x="pi\<bullet>a" in exI) 
 10806 apply(rule_tac x="pi\<bullet>b" in exI) 
 10806 apply(rule_tac x="pi\<bullet>b" in exI) 
 10807 apply(rule_tac x="pi\<bullet>M" in exI)
 10807 apply(rule_tac x="pi\<bullet>M" in exI)
 10808 apply(simp)
 10808 apply(simp)
 10809 apply(rule conjI)
 10809 apply(rule conjI)
 10836 done
 10836 done
 10837 
 10837 
 10838 lemma IMPRIGHT_eqvt_name:
 10838 lemma IMPRIGHT_eqvt_name:
 10839   fixes pi::"name prm"
 10839   fixes pi::"name prm"
 10840   shows "(pi\<bullet>(IMPRIGHT (A IMP B) X Y Z U)) = IMPRIGHT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y) (pi\<bullet>Z) (pi\<bullet>U)"
 10840   shows "(pi\<bullet>(IMPRIGHT (A IMP B) X Y Z U)) = IMPRIGHT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y) (pi\<bullet>Z) (pi\<bullet>U)"
 10841 apply(auto simp add: perm_set_def)
 10841 apply(auto simp add: perm_set_eq)
 10842 apply(rule_tac x="pi\<bullet>xb" in exI)
 10842 apply(rule_tac x="pi\<bullet>xb" in exI)
 10843 apply(rule_tac x="pi\<bullet>a" in exI)
 10843 apply(rule_tac x="pi\<bullet>a" in exI)
 10844 apply(rule_tac x="pi\<bullet>b" in exI)
 10844 apply(rule_tac x="pi\<bullet>b" in exI)
 10845 apply(rule_tac x="pi\<bullet>M" in exI)
 10845 apply(rule_tac x="pi\<bullet>M" in exI)
 10846 apply(simp)
 10846 apply(simp)
 10896 done
 10896 done
 10897 
 10897 
 10898 lemma IMPRIGHT_eqvt_coname:
 10898 lemma IMPRIGHT_eqvt_coname:
 10899   fixes pi::"coname prm"
 10899   fixes pi::"coname prm"
 10900   shows "(pi\<bullet>(IMPRIGHT (A IMP B) X Y Z U)) = IMPRIGHT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y) (pi\<bullet>Z) (pi\<bullet>U)"
 10900   shows "(pi\<bullet>(IMPRIGHT (A IMP B) X Y Z U)) = IMPRIGHT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y) (pi\<bullet>Z) (pi\<bullet>U)"
 10901 apply(auto simp add: perm_set_def)
 10901 apply(auto simp add: perm_set_eq)
 10902 apply(rule_tac x="pi\<bullet>xb" in exI)
 10902 apply(rule_tac x="pi\<bullet>xb" in exI)
 10903 apply(rule_tac x="pi\<bullet>a" in exI)
 10903 apply(rule_tac x="pi\<bullet>a" in exI)
 10904 apply(rule_tac x="pi\<bullet>b" in exI)
 10904 apply(rule_tac x="pi\<bullet>b" in exI)
 10905 apply(rule_tac x="pi\<bullet>M" in exI)
 10905 apply(rule_tac x="pi\<bullet>M" in exI)
 10906 apply(simp)
 10906 apply(simp)
 10964 done
 10964 done
 10965 
 10965 
 10966 lemma IMPLEFT_eqvt_name:
 10966 lemma IMPLEFT_eqvt_name:
 10967   fixes pi::"name prm"
 10967   fixes pi::"name prm"
 10968   shows "(pi\<bullet>(IMPLEFT (A IMP B) X Y)) = IMPLEFT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y)"
 10968   shows "(pi\<bullet>(IMPLEFT (A IMP B) X Y)) = IMPLEFT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y)"
 10969 apply(auto simp add: perm_set_def)
 10969 apply(auto simp add: perm_set_eq)
 10970 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10970 apply(rule_tac x="pi\<bullet>xb" in exI) 
 10971 apply(rule_tac x="pi\<bullet>a" in exI)
 10971 apply(rule_tac x="pi\<bullet>a" in exI)
 10972 apply(rule_tac x="pi\<bullet>y" in exI) 
 10972 apply(rule_tac x="pi\<bullet>y" in exI) 
 10973 apply(rule_tac x="pi\<bullet>M" in exI) 
 10973 apply(rule_tac x="pi\<bullet>M" in exI) 
 10974 apply(rule_tac x="pi\<bullet>N" in exI)
 10974 apply(rule_tac x="pi\<bullet>N" in exI)
 10999 done
 10999 done
 11000 
 11000 
 11001 lemma IMPLEFT_eqvt_coname:
 11001 lemma IMPLEFT_eqvt_coname:
 11002   fixes pi::"coname prm"
 11002   fixes pi::"coname prm"
 11003   shows "(pi\<bullet>(IMPLEFT (A IMP B) X Y)) = IMPLEFT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y)"
 11003   shows "(pi\<bullet>(IMPLEFT (A IMP B) X Y)) = IMPLEFT (A IMP B) (pi\<bullet>X) (pi\<bullet>Y)"
 11004 apply(auto simp add: perm_set_def)
 11004 apply(auto simp add: perm_set_eq)
 11005 apply(rule_tac x="pi\<bullet>xb" in exI) 
 11005 apply(rule_tac x="pi\<bullet>xb" in exI) 
 11006 apply(rule_tac x="pi\<bullet>a" in exI)
 11006 apply(rule_tac x="pi\<bullet>a" in exI)
 11007 apply(rule_tac x="pi\<bullet>y" in exI) 
 11007 apply(rule_tac x="pi\<bullet>y" in exI) 
 11008 apply(rule_tac x="pi\<bullet>M" in exI) 
 11008 apply(rule_tac x="pi\<bullet>M" in exI) 
 11009 apply(rule_tac x="pi\<bullet>N" in exI)
 11009 apply(rule_tac x="pi\<bullet>N" in exI)
 11096 
 11096 
 11097 lemma test2:
 11097 lemma test2:
 11098   shows "x\<in>(X\<inter>Y) = (x\<in>X \<and> x\<in>Y)"
 11098   shows "x\<in>(X\<inter>Y) = (x\<in>X \<and> x\<in>Y)"
 11099 by blast
 11099 by blast
 11100 
 11100 
 11101 lemma pt_Collect_eqvt:
       
 11102   fixes pi::"'x prm"
       
 11103   assumes pt: "pt TYPE('a) TYPE('x)"
       
 11104   and     at: "at TYPE('x)"
       
 11105   shows "pi\<bullet>{x::'a. P x} = {x. P ((rev pi)\<bullet>x)}"
       
 11106 apply(auto simp add: perm_set_def  pt_rev_pi[OF pt, OF at])
       
 11107 apply(rule_tac x="(rev pi)\<bullet>x" in exI)
       
 11108 apply(simp add: pt_pi_rev[OF pt, OF at])
       
 11109 done
       
 11110 
       
 11111 lemma big_inter_eqvt:
 11101 lemma big_inter_eqvt:
 11112   fixes pi1::"name prm"
 11102   fixes pi1::"name prm"
 11113   and   X::"('a::pt_name) set set"
 11103   and   X::"('a::pt_name) set set"
 11114   and   pi2::"coname prm"
 11104   and   pi2::"coname prm"
 11115   and   Y::"('b::pt_coname) set set"
 11105   and   Y::"('b::pt_coname) set set"
 11116   shows "(pi1\<bullet>(\<Inter> X)) = \<Inter> (pi1\<bullet>X)"
 11106   shows "(pi1\<bullet>(\<Inter> X)) = \<Inter> (pi1\<bullet>X)"
 11117   and   "(pi2\<bullet>(\<Inter> Y)) = \<Inter> (pi2\<bullet>Y)"
 11107   and   "(pi2\<bullet>(\<Inter> Y)) = \<Inter> (pi2\<bullet>Y)"
 11118 apply(auto simp add: perm_set_def)
 11108 apply(auto simp add: perm_set_eq)
 11119 apply(rule_tac x="(rev pi1)\<bullet>x" in exI)
 11109 apply(rule_tac x="(rev pi1)\<bullet>x" in exI)
 11120 apply(perm_simp)
 11110 apply(perm_simp)
 11121 apply(rule ballI)
 11111 apply(rule ballI)
 11122 apply(drule_tac x="pi1\<bullet>xa" in spec)
 11112 apply(drule_tac x="pi1\<bullet>xa" in spec)
 11123 apply(auto)
 11113 apply(auto)
 11148   and   pi2::"coname prm"
 11138   and   pi2::"coname prm"
 11149   and   g::"'b set \<Rightarrow> ('b::pt_coname) set"
 11139   and   g::"'b set \<Rightarrow> ('b::pt_coname) set"
 11150   shows "pi1\<bullet>(lfp f) = lfp (pi1\<bullet>f)"
 11140   shows "pi1\<bullet>(lfp f) = lfp (pi1\<bullet>f)"
 11151   and   "pi2\<bullet>(lfp g) = lfp (pi2\<bullet>g)"
 11141   and   "pi2\<bullet>(lfp g) = lfp (pi2\<bullet>g)"
 11152 apply(simp add: lfp_def)
 11142 apply(simp add: lfp_def)
 11153 apply(simp add: Inf_set_def)
 11143 apply(simp add: Inf_set_eq)
 11154 apply(simp add: big_inter_eqvt)
 11144 apply(simp add: big_inter_eqvt)
 11155 apply(simp add: pt_Collect_eqvt[OF pt_name_inst, OF at_name_inst])
 11145 apply(simp add: pt_Collect_eqvt[OF pt_name_inst, OF at_name_inst])
 11156 apply(subgoal_tac "{u. (pi1\<bullet>f) u \<subseteq> u} = {u. ((rev pi1)\<bullet>((pi1\<bullet>f) u)) \<subseteq> ((rev pi1)\<bullet>u)}")
 11146 apply(subgoal_tac "{u. (pi1\<bullet>f) u \<subseteq> u} = {u. ((rev pi1)\<bullet>((pi1\<bullet>f) u)) \<subseteq> ((rev pi1)\<bullet>u)}")
 11157 apply(perm_simp)
 11147 apply(perm_simp)
 11158 apply(rule Collect_cong)
 11148 apply(rule Collect_cong)
 11160 apply(rule subseteq_eqvt(1)[THEN iffD1])
 11150 apply(rule subseteq_eqvt(1)[THEN iffD1])
 11161 apply(simp add: perm_bool)
 11151 apply(simp add: perm_bool)
 11162 apply(drule subseteq_eqvt(1)[THEN iffD2])
 11152 apply(drule subseteq_eqvt(1)[THEN iffD2])
 11163 apply(simp add: perm_bool)
 11153 apply(simp add: perm_bool)
 11164 apply(simp add: lfp_def)
 11154 apply(simp add: lfp_def)
 11165 apply(simp add: Inf_set_def)
 11155 apply(simp add: Inf_set_eq)
 11166 apply(simp add: big_inter_eqvt)
 11156 apply(simp add: big_inter_eqvt)
 11167 apply(simp add: pt_Collect_eqvt[OF pt_coname_inst, OF at_coname_inst])
 11157 apply(simp add: pt_Collect_eqvt[OF pt_coname_inst, OF at_coname_inst])
 11168 apply(subgoal_tac "{u. (pi2\<bullet>g) u \<subseteq> u} = {u. ((rev pi2)\<bullet>((pi2\<bullet>g) u)) \<subseteq> ((rev pi2)\<bullet>u)}")
 11158 apply(subgoal_tac "{u. (pi2\<bullet>g) u \<subseteq> u} = {u. ((rev pi2)\<bullet>((pi2\<bullet>g) u)) \<subseteq> ((rev pi2)\<bullet>u)}")
 11169 apply(perm_simp)
 11159 apply(perm_simp)
 11170 apply(rule Collect_cong)
 11160 apply(rule Collect_cong)
 11343 
 11333 
 11344 lemma BINDING_eqvt_name:
 11334 lemma BINDING_eqvt_name:
 11345   fixes pi::"name prm"
 11335   fixes pi::"name prm"
 11346   shows "(pi\<bullet>(BINDINGn B X)) = BINDINGn B (pi\<bullet>X)" 
 11336   shows "(pi\<bullet>(BINDINGn B X)) = BINDINGn B (pi\<bullet>X)" 
 11347   and   "(pi\<bullet>(BINDINGc B Y)) = BINDINGc B (pi\<bullet>Y)" 
 11337   and   "(pi\<bullet>(BINDINGc B Y)) = BINDINGc B (pi\<bullet>Y)" 
 11348 apply(auto simp add: BINDINGn_def BINDINGc_def perm_set_def)
 11338 apply(auto simp add: BINDINGn_def BINDINGc_def perm_set_eq)
 11349 apply(rule_tac x="pi\<bullet>xb" in exI)
 11339 apply(rule_tac x="pi\<bullet>xb" in exI)
 11350 apply(rule_tac x="pi\<bullet>M" in exI)
 11340 apply(rule_tac x="pi\<bullet>M" in exI)
 11351 apply(simp)
 11341 apply(simp)
 11352 apply(auto)[1]
 11342 apply(auto)[1]
 11353 apply(drule_tac x="(rev pi)\<bullet>a" in spec)
 11343 apply(drule_tac x="(rev pi)\<bullet>a" in spec)
 11398 
 11388 
 11399 lemma BINDING_eqvt_coname:
 11389 lemma BINDING_eqvt_coname:
 11400   fixes pi::"coname prm"
 11390   fixes pi::"coname prm"
 11401   shows "(pi\<bullet>(BINDINGn B X)) = BINDINGn B (pi\<bullet>X)" 
 11391   shows "(pi\<bullet>(BINDINGn B X)) = BINDINGn B (pi\<bullet>X)" 
 11402   and   "(pi\<bullet>(BINDINGc B Y)) = BINDINGc B (pi\<bullet>Y)" 
 11392   and   "(pi\<bullet>(BINDINGc B Y)) = BINDINGc B (pi\<bullet>Y)" 
 11403 apply(auto simp add: BINDINGn_def BINDINGc_def perm_set_def)
 11393 apply(auto simp add: BINDINGn_def BINDINGc_def perm_set_eq)
 11404 apply(rule_tac x="pi\<bullet>xb" in exI)
 11394 apply(rule_tac x="pi\<bullet>xb" in exI)
 11405 apply(rule_tac x="pi\<bullet>M" in exI)
 11395 apply(rule_tac x="pi\<bullet>M" in exI)
 11406 apply(simp)
 11396 apply(simp)
 11407 apply(auto)[1]
 11397 apply(auto)[1]
 11408 apply(drule_tac x="(rev pi)\<bullet>a" in spec)
 11398 apply(drule_tac x="(rev pi)\<bullet>a" in spec)
 11458 proof (nominal_induct B rule: ty.induct)
 11448 proof (nominal_induct B rule: ty.induct)
 11459   case (PR X)
 11449   case (PR X)
 11460   { case 1 show ?case 
 11450   { case 1 show ?case 
 11461       apply -
 11451       apply -
 11462       apply(simp add: lfp_eqvt)
 11452       apply(simp add: lfp_eqvt)
 11463       apply(simp add: perm_fun_def)
 11453       apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11464       apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name)
 11454       apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name)
 11465       apply(perm_simp)
 11455       apply(perm_simp)
 11466     done
 11456     done
 11467   next
 11457   next
 11468     case 2 show ?case
 11458     case 2 show ?case
 11469       apply -
 11459       apply -
 11470       apply(simp only: NEGc_simps)
 11460       apply(simp only: NEGc_simps)
 11471       apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name)
 11461       apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name)
 11472       apply(simp add: lfp_eqvt)
 11462       apply(simp add: lfp_eqvt)
 11473       apply(simp add: comp_def)
 11463       apply(simp add: comp_def)
 11474       apply(simp add: perm_fun_def)
 11464       apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11475       apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name)
 11465       apply(simp add: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name)
 11476       apply(perm_simp)
 11466       apply(perm_simp)
 11477       done
 11467       done
 11478   }
 11468   }
 11479 next
 11469 next
 11482   have ih2: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11472   have ih2: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11483   have g: "pi\<bullet>(\<parallel>(NOT B)\<parallel>) = (\<parallel>(NOT B)\<parallel>)"
 11473   have g: "pi\<bullet>(\<parallel>(NOT B)\<parallel>) = (\<parallel>(NOT B)\<parallel>)"
 11484     apply -
 11474     apply -
 11485     apply(simp only: lfp_eqvt)
 11475     apply(simp only: lfp_eqvt)
 11486     apply(simp only: comp_def)
 11476     apply(simp only: comp_def)
 11487     apply(simp only: perm_fun_def)
 11477     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11488     apply(simp only: NEGc.simps NEGn.simps)
 11478     apply(simp only: NEGc.simps NEGn.simps)
 11489     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name NOTRIGHT_eqvt_name NOTLEFT_eqvt_name)
 11479     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name NOTRIGHT_eqvt_name NOTLEFT_eqvt_name)
 11490     apply(perm_simp add: ih1 ih2)
 11480     apply(perm_simp add: ih1 ih2)
 11491     done
 11481     done
 11492   { case 1 show ?case by (rule g)
 11482   { case 1 show ?case by (rule g)
 11502   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11492   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11503   have g: "pi\<bullet>(\<parallel>(A AND B)\<parallel>) = (\<parallel>(A AND B)\<parallel>)"
 11493   have g: "pi\<bullet>(\<parallel>(A AND B)\<parallel>) = (\<parallel>(A AND B)\<parallel>)"
 11504     apply -
 11494     apply -
 11505     apply(simp only: lfp_eqvt)
 11495     apply(simp only: lfp_eqvt)
 11506     apply(simp only: comp_def)
 11496     apply(simp only: comp_def)
 11507     apply(simp only: perm_fun_def)
 11497     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11508     apply(simp only: NEGc.simps NEGn.simps)
 11498     apply(simp only: NEGc.simps NEGn.simps)
 11509     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name ANDRIGHT_eqvt_name 
 11499     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name ANDRIGHT_eqvt_name 
 11510                      ANDLEFT2_eqvt_name ANDLEFT1_eqvt_name)
 11500                      ANDLEFT2_eqvt_name ANDLEFT1_eqvt_name)
 11511     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11501     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11512     done
 11502     done
 11524   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11514   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11525   have g: "pi\<bullet>(\<parallel>(A OR B)\<parallel>) = (\<parallel>(A OR B)\<parallel>)"
 11515   have g: "pi\<bullet>(\<parallel>(A OR B)\<parallel>) = (\<parallel>(A OR B)\<parallel>)"
 11526     apply -
 11516     apply -
 11527     apply(simp only: lfp_eqvt)
 11517     apply(simp only: lfp_eqvt)
 11528     apply(simp only: comp_def)
 11518     apply(simp only: comp_def)
 11529     apply(simp only: perm_fun_def)
 11519     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11530     apply(simp only: NEGc.simps NEGn.simps)
 11520     apply(simp only: NEGc.simps NEGn.simps)
 11531     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name ORRIGHT1_eqvt_name 
 11521     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name ORRIGHT1_eqvt_name 
 11532                      ORRIGHT2_eqvt_name ORLEFT_eqvt_name)
 11522                      ORRIGHT2_eqvt_name ORLEFT_eqvt_name)
 11533     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11523     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11534     done
 11524     done
 11546   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11536   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11547   have g: "pi\<bullet>(\<parallel>(A IMP B)\<parallel>) = (\<parallel>(A IMP B)\<parallel>)"
 11537   have g: "pi\<bullet>(\<parallel>(A IMP B)\<parallel>) = (\<parallel>(A IMP B)\<parallel>)"
 11548     apply -
 11538     apply -
 11549     apply(simp only: lfp_eqvt)
 11539     apply(simp only: lfp_eqvt)
 11550     apply(simp only: comp_def)
 11540     apply(simp only: comp_def)
 11551     apply(simp only: perm_fun_def)
 11541     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11552     apply(simp only: NEGc.simps NEGn.simps)
 11542     apply(simp only: NEGc.simps NEGn.simps)
 11553     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name IMPRIGHT_eqvt_name IMPLEFT_eqvt_name)
 11543     apply(simp only: union_eqvt AXIOMS_eqvt_name BINDING_eqvt_name IMPRIGHT_eqvt_name IMPLEFT_eqvt_name)
 11554     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11544     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11555     done
 11545     done
 11556   { case 1 show ?case by (rule g)
 11546   { case 1 show ?case by (rule g)
 11568 proof (nominal_induct B rule: ty.induct)
 11558 proof (nominal_induct B rule: ty.induct)
 11569   case (PR X)
 11559   case (PR X)
 11570   { case 1 show ?case 
 11560   { case 1 show ?case 
 11571       apply -
 11561       apply -
 11572       apply(simp add: lfp_eqvt)
 11562       apply(simp add: lfp_eqvt)
 11573       apply(simp add: perm_fun_def)
 11563       apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11574       apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname)
 11564       apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname)
 11575       apply(perm_simp)
 11565       apply(perm_simp)
 11576     done
 11566     done
 11577   next
 11567   next
 11578     case 2 show ?case
 11568     case 2 show ?case
 11579       apply -
 11569       apply -
 11580       apply(simp only: NEGc_simps)
 11570       apply(simp only: NEGc_simps)
 11581       apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname)
 11571       apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname)
 11582       apply(simp add: lfp_eqvt)
 11572       apply(simp add: lfp_eqvt)
 11583       apply(simp add: comp_def)
 11573       apply(simp add: comp_def)
 11584       apply(simp add: perm_fun_def)
 11574       apply(simp add: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11585       apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname)
 11575       apply(simp add: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname)
 11586       apply(perm_simp)
 11576       apply(perm_simp)
 11587       done
 11577       done
 11588   }
 11578   }
 11589 next
 11579 next
 11592   have ih2: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11582   have ih2: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11593   have g: "pi\<bullet>(\<parallel>(NOT B)\<parallel>) = (\<parallel>(NOT B)\<parallel>)"
 11583   have g: "pi\<bullet>(\<parallel>(NOT B)\<parallel>) = (\<parallel>(NOT B)\<parallel>)"
 11594     apply -
 11584     apply -
 11595     apply(simp only: lfp_eqvt)
 11585     apply(simp only: lfp_eqvt)
 11596     apply(simp only: comp_def)
 11586     apply(simp only: comp_def)
 11597     apply(simp only: perm_fun_def)
 11587     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11598     apply(simp only: NEGc.simps NEGn.simps)
 11588     apply(simp only: NEGc.simps NEGn.simps)
 11599     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname 
 11589     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname 
 11600             NOTRIGHT_eqvt_coname NOTLEFT_eqvt_coname)
 11590             NOTRIGHT_eqvt_coname NOTLEFT_eqvt_coname)
 11601     apply(perm_simp add: ih1 ih2)
 11591     apply(perm_simp add: ih1 ih2)
 11602     done
 11592     done
 11614   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11604   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11615   have g: "pi\<bullet>(\<parallel>(A AND B)\<parallel>) = (\<parallel>(A AND B)\<parallel>)"
 11605   have g: "pi\<bullet>(\<parallel>(A AND B)\<parallel>) = (\<parallel>(A AND B)\<parallel>)"
 11616     apply -
 11606     apply -
 11617     apply(simp only: lfp_eqvt)
 11607     apply(simp only: lfp_eqvt)
 11618     apply(simp only: comp_def)
 11608     apply(simp only: comp_def)
 11619     apply(simp only: perm_fun_def)
 11609     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11620     apply(simp only: NEGc.simps NEGn.simps)
 11610     apply(simp only: NEGc.simps NEGn.simps)
 11621     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname ANDRIGHT_eqvt_coname 
 11611     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname ANDRIGHT_eqvt_coname 
 11622                      ANDLEFT2_eqvt_coname ANDLEFT1_eqvt_coname)
 11612                      ANDLEFT2_eqvt_coname ANDLEFT1_eqvt_coname)
 11623     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11613     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11624     done
 11614     done
 11636   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11626   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11637   have g: "pi\<bullet>(\<parallel>(A OR B)\<parallel>) = (\<parallel>(A OR B)\<parallel>)"
 11627   have g: "pi\<bullet>(\<parallel>(A OR B)\<parallel>) = (\<parallel>(A OR B)\<parallel>)"
 11638     apply -
 11628     apply -
 11639     apply(simp only: lfp_eqvt)
 11629     apply(simp only: lfp_eqvt)
 11640     apply(simp only: comp_def)
 11630     apply(simp only: comp_def)
 11641     apply(simp only: perm_fun_def)
 11631     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11642     apply(simp only: NEGc.simps NEGn.simps)
 11632     apply(simp only: NEGc.simps NEGn.simps)
 11643     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname ORRIGHT1_eqvt_coname 
 11633     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname ORRIGHT1_eqvt_coname 
 11644                      ORRIGHT2_eqvt_coname ORLEFT_eqvt_coname)
 11634                      ORRIGHT2_eqvt_coname ORLEFT_eqvt_coname)
 11645     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11635     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11646     done
 11636     done
 11658   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11648   have ih4: "pi\<bullet>(\<parallel><B>\<parallel>) = (\<parallel><B>\<parallel>)" by fact
 11659   have g: "pi\<bullet>(\<parallel>(A IMP B)\<parallel>) = (\<parallel>(A IMP B)\<parallel>)"
 11649   have g: "pi\<bullet>(\<parallel>(A IMP B)\<parallel>) = (\<parallel>(A IMP B)\<parallel>)"
 11660     apply -
 11650     apply -
 11661     apply(simp only: lfp_eqvt)
 11651     apply(simp only: lfp_eqvt)
 11662     apply(simp only: comp_def)
 11652     apply(simp only: comp_def)
 11663     apply(simp only: perm_fun_def)
 11653     apply(simp only: perm_fun_def [where 'a="ntrm \<Rightarrow> bool"])
 11664     apply(simp only: NEGc.simps NEGn.simps)
 11654     apply(simp only: NEGc.simps NEGn.simps)
 11665     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname IMPRIGHT_eqvt_coname 
 11655     apply(simp only: union_eqvt AXIOMS_eqvt_coname BINDING_eqvt_coname IMPRIGHT_eqvt_coname 
 11666          IMPLEFT_eqvt_coname)
 11656          IMPLEFT_eqvt_coname)
 11667     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11657     apply(perm_simp add: ih1 ih2 ih3 ih4)
 11668     done
 11658     done