src/HOL/Hoare_Parallel/Gar_Coll.thy
changeset 67443 3abf6a722518
parent 62042 6c6ccf573479
child 69597 ff784d5a5bfb
equal deleted inserted replaced
67442:f075640b8868 67443:3abf6a722518
   160 apply annhoare
   160 apply annhoare
   161 apply(simp_all add:Graph6 Graph7 Graph8 Graph12)
   161 apply(simp_all add:Graph6 Graph7 Graph8 Graph12)
   162       apply force
   162       apply force
   163      apply force
   163      apply force
   164     apply force
   164     apply force
   165 \<comment>\<open>4 subgoals left\<close>
   165 \<comment> \<open>4 subgoals left\<close>
   166 apply clarify
   166 apply clarify
   167 apply(simp add:Proper_Edges_def Proper_Roots_def Graph6 Graph7 Graph8 Graph12)
   167 apply(simp add:Proper_Edges_def Proper_Roots_def Graph6 Graph7 Graph8 Graph12)
   168 apply (erule disjE)
   168 apply (erule disjE)
   169  apply(rule disjI1)
   169  apply(rule disjI1)
   170  apply(erule Graph13)
   170  apply(erule Graph13)
   186  apply fast
   186  apply fast
   187 apply(rule disjI1)
   187 apply(rule disjI1)
   188 apply(erule subset_psubset_trans)
   188 apply(erule subset_psubset_trans)
   189 apply(erule Graph11)
   189 apply(erule Graph11)
   190 apply fast
   190 apply fast
   191 \<comment>\<open>3 subgoals left\<close>
   191 \<comment> \<open>3 subgoals left\<close>
   192 apply force
   192 apply force
   193 apply force
   193 apply force
   194 \<comment>\<open>last\<close>
   194 \<comment> \<open>last\<close>
   195 apply clarify
   195 apply clarify
   196 apply simp
   196 apply simp
   197 apply(subgoal_tac "ind x = length (E x)")
   197 apply(subgoal_tac "ind x = length (E x)")
   198  apply (simp)
   198  apply (simp)
   199  apply(drule Graph1)
   199  apply(drule Graph1)
   244 apply annhoare
   244 apply annhoare
   245 apply(simp_all add: Graph6 Graph7 Graph8 Graph12)
   245 apply(simp_all add: Graph6 Graph7 Graph8 Graph12)
   246        apply force
   246        apply force
   247       apply force
   247       apply force
   248      apply force
   248      apply force
   249 \<comment>\<open>5 subgoals left\<close>
   249 \<comment> \<open>5 subgoals left\<close>
   250 apply clarify
   250 apply clarify
   251 apply(simp add:BtoW_def Proper_Edges_def)
   251 apply(simp add:BtoW_def Proper_Edges_def)
   252 \<comment>\<open>4 subgoals left\<close>
   252 \<comment> \<open>4 subgoals left\<close>
   253 apply clarify
   253 apply clarify
   254 apply(simp add:Proper_Edges_def Graph6 Graph7 Graph8 Graph12)
   254 apply(simp add:Proper_Edges_def Graph6 Graph7 Graph8 Graph12)
   255 apply (erule disjE)
   255 apply (erule disjE)
   256  apply (rule disjI1)
   256  apply (rule disjI1)
   257  apply (erule psubset_subset_trans)
   257  apply (erule psubset_subset_trans)
   284  apply arith
   284  apply arith
   285 apply(rule disjI1)
   285 apply(rule disjI1)
   286 apply(erule subset_psubset_trans)
   286 apply(erule subset_psubset_trans)
   287 apply(erule Graph11)
   287 apply(erule Graph11)
   288 apply fast
   288 apply fast
   289 \<comment>\<open>2 subgoals left\<close>
   289 \<comment> \<open>2 subgoals left\<close>
   290 apply clarify
   290 apply clarify
   291 apply(simp add:Proper_Edges_def Graph6 Graph7 Graph8 Graph12)
   291 apply(simp add:Proper_Edges_def Graph6 Graph7 Graph8 Graph12)
   292 apply (erule disjE)
   292 apply (erule disjE)
   293  apply fast
   293  apply fast
   294 apply clarify
   294 apply clarify
   301   apply (subgoal_tac "Suc (ind x)\<le>r")
   301   apply (subgoal_tac "Suc (ind x)\<le>r")
   302    apply fast
   302    apply fast
   303   apply arith
   303   apply arith
   304  apply (simp add: BtoW_def)
   304  apply (simp add: BtoW_def)
   305 apply (simp add: BtoW_def)
   305 apply (simp add: BtoW_def)
   306 \<comment>\<open>last\<close>
   306 \<comment> \<open>last\<close>
   307 apply clarify
   307 apply clarify
   308 apply simp
   308 apply simp
   309 apply(subgoal_tac "ind x = length (E x)")
   309 apply(subgoal_tac "ind x = length (E x)")
   310  apply (simp)
   310  apply (simp)
   311  apply(drule Graph1)
   311  apply(drule Graph1)
   518 
   518 
   519 lemma interfree_Propagate_Black_Redirect_Edge:
   519 lemma interfree_Propagate_Black_Redirect_Edge:
   520   "interfree_aux (Some Propagate_Black, {}, Some Redirect_Edge)"
   520   "interfree_aux (Some Propagate_Black, {}, Some Redirect_Edge)"
   521 apply (unfold modules )
   521 apply (unfold modules )
   522 apply interfree_aux
   522 apply interfree_aux
   523 \<comment>\<open>11 subgoals left\<close>
   523 \<comment> \<open>11 subgoals left\<close>
   524 apply(clarify, simp add:abbrev Graph6 Graph12)
   524 apply(clarify, simp add:abbrev Graph6 Graph12)
   525 apply(clarify, simp add:abbrev Graph6 Graph12)
   525 apply(clarify, simp add:abbrev Graph6 Graph12)
   526 apply(clarify, simp add:abbrev Graph6 Graph12)
   526 apply(clarify, simp add:abbrev Graph6 Graph12)
   527 apply(clarify, simp add:abbrev Graph6 Graph12)
   527 apply(clarify, simp add:abbrev Graph6 Graph12)
   528 apply(erule conjE)+
   528 apply(erule conjE)+
   533  apply (simp add:BtoW_def)
   533  apply (simp add:BtoW_def)
   534 apply(rule conjI)
   534 apply(rule conjI)
   535  apply (force simp add:BtoW_def)
   535  apply (force simp add:BtoW_def)
   536 apply(erule Graph4)
   536 apply(erule Graph4)
   537    apply simp+
   537    apply simp+
   538 \<comment>\<open>7 subgoals left\<close>
   538 \<comment> \<open>7 subgoals left\<close>
   539 apply(clarify, simp add:abbrev Graph6 Graph12)
   539 apply(clarify, simp add:abbrev Graph6 Graph12)
   540 apply(erule conjE)+
   540 apply(erule conjE)+
   541 apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   541 apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   542  apply(erule Graph4)
   542  apply(erule Graph4)
   543    apply(simp)+
   543    apply(simp)+
   545  apply (simp add:BtoW_def)
   545  apply (simp add:BtoW_def)
   546 apply(rule conjI)
   546 apply(rule conjI)
   547  apply (force simp add:BtoW_def)
   547  apply (force simp add:BtoW_def)
   548 apply(erule Graph4)
   548 apply(erule Graph4)
   549    apply simp+
   549    apply simp+
   550 \<comment>\<open>6 subgoals left\<close>
   550 \<comment> \<open>6 subgoals left\<close>
   551 apply(clarify, simp add:abbrev Graph6 Graph12)
   551 apply(clarify, simp add:abbrev Graph6 Graph12)
   552 apply(erule conjE)+
   552 apply(erule conjE)+
   553 apply(rule conjI)
   553 apply(rule conjI)
   554  apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   554  apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   555   apply(erule Graph4)
   555   apply(erule Graph4)
   560   apply (force simp add:BtoW_def)
   560   apply (force simp add:BtoW_def)
   561  apply(erule Graph4)
   561  apply(erule Graph4)
   562     apply simp+
   562     apply simp+
   563 apply(simp add:BtoW_def nth_list_update)
   563 apply(simp add:BtoW_def nth_list_update)
   564 apply force
   564 apply force
   565 \<comment>\<open>5 subgoals left\<close>
   565 \<comment> \<open>5 subgoals left\<close>
   566 apply(clarify, simp add:abbrev Graph6 Graph12)
   566 apply(clarify, simp add:abbrev Graph6 Graph12)
   567 \<comment>\<open>4 subgoals left\<close>
   567 \<comment> \<open>4 subgoals left\<close>
   568 apply(clarify, simp add:abbrev Graph6 Graph12)
   568 apply(clarify, simp add:abbrev Graph6 Graph12)
   569 apply(rule conjI)
   569 apply(rule conjI)
   570  apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   570  apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   571   apply(erule Graph4)
   571   apply(erule Graph4)
   572     apply(simp)+
   572     apply(simp)+
   586   apply simp
   586   apply simp
   587   apply (erule Graph5)
   587   apply (erule Graph5)
   588   apply simp+
   588   apply simp+
   589  apply(force simp add:BtoW_def)
   589  apply(force simp add:BtoW_def)
   590 apply(force simp add:BtoW_def)
   590 apply(force simp add:BtoW_def)
   591 \<comment>\<open>3 subgoals left\<close>
   591 \<comment> \<open>3 subgoals left\<close>
   592 apply(clarify, simp add:abbrev Graph6 Graph12)
   592 apply(clarify, simp add:abbrev Graph6 Graph12)
   593 \<comment>\<open>2 subgoals left\<close>
   593 \<comment> \<open>2 subgoals left\<close>
   594 apply(clarify, simp add:abbrev Graph6 Graph12)
   594 apply(clarify, simp add:abbrev Graph6 Graph12)
   595 apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   595 apply(erule disjE, erule disjI1, rule disjI2, rule allI, (rule impI)+, case_tac "R=i", rule conjI, erule sym)
   596  apply clarify
   596  apply clarify
   597  apply(erule Graph4)
   597  apply(erule Graph4)
   598    apply(simp)+
   598    apply(simp)+
   613 
   613 
   614 lemma interfree_Propagate_Black_Color_Target:
   614 lemma interfree_Propagate_Black_Color_Target:
   615   "interfree_aux (Some Propagate_Black, {}, Some Color_Target)"
   615   "interfree_aux (Some Propagate_Black, {}, Some Color_Target)"
   616 apply (unfold modules )
   616 apply (unfold modules )
   617 apply interfree_aux
   617 apply interfree_aux
   618 \<comment>\<open>11 subgoals left\<close>
   618 \<comment> \<open>11 subgoals left\<close>
   619 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)+
   619 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)+
   620 apply(erule conjE)+
   620 apply(erule conjE)+
   621 apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   621 apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   622       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   622       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   623       erule allE, erule impE, assumption, erule impE, assumption,
   623       erule allE, erule impE, assumption, erule impE, assumption,
   624       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   624       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   625 \<comment>\<open>7 subgoals left\<close>
   625 \<comment> \<open>7 subgoals left\<close>
   626 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   626 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   627 apply(erule conjE)+
   627 apply(erule conjE)+
   628 apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   628 apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   629       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   629       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   630       erule allE, erule impE, assumption, erule impE, assumption,
   630       erule allE, erule impE, assumption, erule impE, assumption,
   631       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   631       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   632 \<comment>\<open>6 subgoals left\<close>
   632 \<comment> \<open>6 subgoals left\<close>
   633 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   633 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   634 apply clarify
   634 apply clarify
   635 apply (rule conjI)
   635 apply (rule conjI)
   636  apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   636  apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   637       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   637       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   638       erule allE, erule impE, assumption, erule impE, assumption,
   638       erule allE, erule impE, assumption, erule impE, assumption,
   639       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   639       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   640 apply(simp add:nth_list_update)
   640 apply(simp add:nth_list_update)
   641 \<comment>\<open>5 subgoals left\<close>
   641 \<comment> \<open>5 subgoals left\<close>
   642 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   642 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   643 \<comment>\<open>4 subgoals left\<close>
   643 \<comment> \<open>4 subgoals left\<close>
   644 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   644 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   645 apply (rule conjI)
   645 apply (rule conjI)
   646  apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   646  apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   647       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   647       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   648       erule allE, erule impE, assumption, erule impE, assumption,
   648       erule allE, erule impE, assumption, erule impE, assumption,
   649       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   649       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   650 apply(rule conjI)
   650 apply(rule conjI)
   651 apply(simp add:nth_list_update)
   651 apply(simp add:nth_list_update)
   652 apply(rule impI,rule impI, case_tac "M x!T=Black",rotate_tac -1, force simp add: BtoW_def Graph10,
   652 apply(rule impI,rule impI, case_tac "M x!T=Black",rotate_tac -1, force simp add: BtoW_def Graph10,
   653       erule subset_psubset_trans, erule Graph11, force)
   653       erule subset_psubset_trans, erule Graph11, force)
   654 \<comment>\<open>3 subgoals left\<close>
   654 \<comment> \<open>3 subgoals left\<close>
   655 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   655 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   656 \<comment>\<open>2 subgoals left\<close>
   656 \<comment> \<open>2 subgoals left\<close>
   657 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   657 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   658 apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   658 apply(erule disjE,rule disjI1,erule psubset_subset_trans,erule Graph9,
   659       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   659       case_tac "M x!T=Black", rule disjI2,rotate_tac -1, simp add: Graph10, clarify,
   660       erule allE, erule impE, assumption, erule impE, assumption,
   660       erule allE, erule impE, assumption, erule impE, assumption,
   661       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   661       simp add:BtoW_def, rule disjI1, erule subset_psubset_trans, erule Graph11, force)
   662 \<comment>\<open>3 subgoals left\<close>
   662 \<comment> \<open>3 subgoals left\<close>
   663 apply(simp add:abbrev)
   663 apply(simp add:abbrev)
   664 done
   664 done
   665 
   665 
   666 lemma interfree_Color_Target_Propagate_Black:
   666 lemma interfree_Color_Target_Propagate_Black:
   667   "interfree_aux (Some Color_Target, {}, Some Propagate_Black)"
   667   "interfree_aux (Some Color_Target, {}, Some Propagate_Black)"
   672 
   672 
   673 lemma interfree_Count_Redirect_Edge:
   673 lemma interfree_Count_Redirect_Edge:
   674   "interfree_aux (Some Count, {}, Some Redirect_Edge)"
   674   "interfree_aux (Some Count, {}, Some Redirect_Edge)"
   675 apply (unfold modules)
   675 apply (unfold modules)
   676 apply interfree_aux
   676 apply interfree_aux
   677 \<comment>\<open>9 subgoals left\<close>
   677 \<comment> \<open>9 subgoals left\<close>
   678 apply(simp_all add:abbrev Graph6 Graph12)
   678 apply(simp_all add:abbrev Graph6 Graph12)
   679 \<comment>\<open>6 subgoals left\<close>
   679 \<comment> \<open>6 subgoals left\<close>
   680 apply(clarify, simp add:abbrev Graph6 Graph12,
   680 apply(clarify, simp add:abbrev Graph6 Graph12,
   681       erule disjE,erule disjI1,rule disjI2,rule subset_trans, erule Graph3,force,force)+
   681       erule disjE,erule disjI1,rule disjI2,rule subset_trans, erule Graph3,force,force)+
   682 done
   682 done
   683 
   683 
   684 lemma interfree_Redirect_Edge_Count:
   684 lemma interfree_Redirect_Edge_Count:
   691 
   691 
   692 lemma interfree_Count_Color_Target:
   692 lemma interfree_Count_Color_Target:
   693   "interfree_aux (Some Count, {}, Some Color_Target)"
   693   "interfree_aux (Some Count, {}, Some Color_Target)"
   694 apply (unfold modules )
   694 apply (unfold modules )
   695 apply interfree_aux
   695 apply interfree_aux
   696 \<comment>\<open>9 subgoals left\<close>
   696 \<comment> \<open>9 subgoals left\<close>
   697 apply(simp_all add:abbrev Graph7 Graph8 Graph12)
   697 apply(simp_all add:abbrev Graph7 Graph8 Graph12)
   698 \<comment>\<open>6 subgoals left\<close>
   698 \<comment> \<open>6 subgoals left\<close>
   699 apply(clarify,simp add:abbrev Graph7 Graph8 Graph12,
   699 apply(clarify,simp add:abbrev Graph7 Graph8 Graph12,
   700       erule disjE, erule disjI1, rule disjI2,erule subset_trans, erule Graph9)+
   700       erule disjE, erule disjI1, rule disjI2,erule subset_trans, erule Graph9)+
   701 \<comment>\<open>2 subgoals left\<close>
   701 \<comment> \<open>2 subgoals left\<close>
   702 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   702 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12)
   703 apply(rule conjI)
   703 apply(rule conjI)
   704  apply(erule disjE, erule disjI1, rule disjI2,erule subset_trans, erule Graph9)
   704  apply(erule disjE, erule disjI1, rule disjI2,erule subset_trans, erule Graph9)
   705 apply(simp add:nth_list_update)
   705 apply(simp add:nth_list_update)
   706 \<comment>\<open>1 subgoal left\<close>
   706 \<comment> \<open>1 subgoal left\<close>
   707 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12,
   707 apply(clarify, simp add:abbrev Graph7 Graph8 Graph12,
   708       erule disjE, erule disjI1, rule disjI2,erule subset_trans, erule Graph9)
   708       erule disjE, erule disjI1, rule disjI2,erule subset_trans, erule Graph9)
   709 done
   709 done
   710 
   710 
   711 lemma interfree_Color_Target_Count:
   711 lemma interfree_Color_Target_Count:
   767 apply(unfold Collector_def Mutator_def)
   767 apply(unfold Collector_def Mutator_def)
   768 apply interfree_aux
   768 apply interfree_aux
   769 apply(simp_all add:collector_mutator_interfree)
   769 apply(simp_all add:collector_mutator_interfree)
   770 apply(unfold modules collector_defs Mut_init_def)
   770 apply(unfold modules collector_defs Mut_init_def)
   771 apply(tactic  \<open>TRYALL (interfree_aux_tac @{context})\<close>)
   771 apply(tactic  \<open>TRYALL (interfree_aux_tac @{context})\<close>)
   772 \<comment>\<open>32 subgoals left\<close>
   772 \<comment> \<open>32 subgoals left\<close>
   773 apply(simp_all add:Graph6 Graph7 Graph8 Append_to_free0 Append_to_free1 Graph12)
   773 apply(simp_all add:Graph6 Graph7 Graph8 Append_to_free0 Append_to_free1 Graph12)
   774 \<comment>\<open>20 subgoals left\<close>
   774 \<comment> \<open>20 subgoals left\<close>
   775 apply(tactic\<open>TRYALL (clarify_tac @{context})\<close>)
   775 apply(tactic\<open>TRYALL (clarify_tac @{context})\<close>)
   776 apply(simp_all add:Graph6 Graph7 Graph8 Append_to_free0 Append_to_free1 Graph12)
   776 apply(simp_all add:Graph6 Graph7 Graph8 Append_to_free0 Append_to_free1 Graph12)
   777 apply(tactic \<open>TRYALL (eresolve_tac @{context} [disjE])\<close>)
   777 apply(tactic \<open>TRYALL (eresolve_tac @{context} [disjE])\<close>)
   778 apply simp_all
   778 apply simp_all
   779 apply(tactic \<open>TRYALL(EVERY'[resolve_tac @{context} [disjI2],
   779 apply(tactic \<open>TRYALL(EVERY'[resolve_tac @{context} [disjI2],
   798 apply(unfold Collector_def Mutator_def)
   798 apply(unfold Collector_def Mutator_def)
   799 apply interfree_aux
   799 apply interfree_aux
   800 apply(simp_all add:collector_mutator_interfree)
   800 apply(simp_all add:collector_mutator_interfree)
   801 apply(unfold modules collector_defs Mut_init_def)
   801 apply(unfold modules collector_defs Mut_init_def)
   802 apply(tactic  \<open>TRYALL (interfree_aux_tac @{context})\<close>)
   802 apply(tactic  \<open>TRYALL (interfree_aux_tac @{context})\<close>)
   803 \<comment>\<open>64 subgoals left\<close>
   803 \<comment> \<open>64 subgoals left\<close>
   804 apply(simp_all add:nth_list_update Invariants Append_to_free0)+
   804 apply(simp_all add:nth_list_update Invariants Append_to_free0)+
   805 apply(tactic\<open>TRYALL (clarify_tac @{context})\<close>)
   805 apply(tactic\<open>TRYALL (clarify_tac @{context})\<close>)
   806 \<comment>\<open>4 subgoals left\<close>
   806 \<comment> \<open>4 subgoals left\<close>
   807 apply force
   807 apply force
   808 apply(simp add:Append_to_free2)
   808 apply(simp add:Append_to_free2)
   809 apply force
   809 apply force
   810 apply(simp add:Append_to_free2)
   810 apply(simp add:Append_to_free2)
   811 done
   811 done