64 Goal "(mkex2 A B`nil`exA`exB) s t= nil"; |
64 Goal "(mkex2 A B`nil`exA`exB) s t= nil"; |
65 by (stac mkex2_unfold 1); |
65 by (stac mkex2_unfold 1); |
66 by (Simp_tac 1); |
66 by (Simp_tac 1); |
67 qed"mkex2_nil"; |
67 qed"mkex2_nil"; |
68 |
68 |
69 Goal "!!x.[| x:act A; x~:act B; HD`exA=Def a|] \ |
69 Goal "[| x:act A; x~:act B; HD`exA=Def a|] \ |
70 \ ==> (mkex2 A B`(x>>sch)`exA`exB) s t = \ |
70 \ ==> (mkex2 A B`(x>>sch)`exA`exB) s t = \ |
71 \ (x,snd a,t) >> (mkex2 A B`sch`(TL`exA)`exB) (snd a) t"; |
71 \ (x,snd a,t) >> (mkex2 A B`sch`(TL`exA)`exB) (snd a) t"; |
72 by (rtac trans 1); |
72 by (rtac trans 1); |
73 by (stac mkex2_unfold 1); |
73 by (stac mkex2_unfold 1); |
74 by (asm_full_simp_tac (simpset() addsimps [Cons_def,If_and_if]) 1); |
74 by (asm_full_simp_tac (simpset() addsimps [Cons_def,If_and_if]) 1); |
75 by (asm_full_simp_tac (simpset() addsimps [Cons_def]) 1); |
75 by (asm_full_simp_tac (simpset() addsimps [Cons_def]) 1); |
76 qed"mkex2_cons_1"; |
76 qed"mkex2_cons_1"; |
77 |
77 |
78 Goal "!!x.[| x~:act A; x:act B; HD`exB=Def b|] \ |
78 Goal "[| x~:act A; x:act B; HD`exB=Def b|] \ |
79 \ ==> (mkex2 A B`(x>>sch)`exA`exB) s t = \ |
79 \ ==> (mkex2 A B`(x>>sch)`exA`exB) s t = \ |
80 \ (x,s,snd b) >> (mkex2 A B`sch`exA`(TL`exB)) s (snd b)"; |
80 \ (x,s,snd b) >> (mkex2 A B`sch`exA`(TL`exB)) s (snd b)"; |
81 by (rtac trans 1); |
81 by (rtac trans 1); |
82 by (stac mkex2_unfold 1); |
82 by (stac mkex2_unfold 1); |
83 by (asm_full_simp_tac (simpset() addsimps [Cons_def,If_and_if]) 1); |
83 by (asm_full_simp_tac (simpset() addsimps [Cons_def,If_and_if]) 1); |
84 by (asm_full_simp_tac (simpset() addsimps [Cons_def]) 1); |
84 by (asm_full_simp_tac (simpset() addsimps [Cons_def]) 1); |
85 qed"mkex2_cons_2"; |
85 qed"mkex2_cons_2"; |
86 |
86 |
87 Goal "!!x.[| x:act A; x:act B; HD`exA=Def a;HD`exB=Def b|] \ |
87 Goal "[| x:act A; x:act B; HD`exA=Def a;HD`exB=Def b|] \ |
88 \ ==> (mkex2 A B`(x>>sch)`exA`exB) s t = \ |
88 \ ==> (mkex2 A B`(x>>sch)`exA`exB) s t = \ |
89 \ (x,snd a,snd b) >> \ |
89 \ (x,snd a,snd b) >> \ |
90 \ (mkex2 A B`sch`(TL`exA)`(TL`exB)) (snd a) (snd b)"; |
90 \ (mkex2 A B`sch`(TL`exA)`(TL`exB)) (snd a) (snd b)"; |
91 by (rtac trans 1); |
91 by (rtac trans 1); |
92 by (stac mkex2_unfold 1); |
92 by (stac mkex2_unfold 1); |
107 |
107 |
108 Goal "mkex A B nil (s,exA) (t,exB) = ((s,t),nil)"; |
108 Goal "mkex A B nil (s,exA) (t,exB) = ((s,t),nil)"; |
109 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
109 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
110 qed"mkex_nil"; |
110 qed"mkex_nil"; |
111 |
111 |
112 Goal "!!x.[| x:act A; x~:act B |] \ |
112 Goal "[| x:act A; x~:act B |] \ |
113 \ ==> mkex A B (x>>sch) (s,a>>exA) (t,exB) = \ |
113 \ ==> mkex A B (x>>sch) (s,a>>exA) (t,exB) = \ |
114 \ ((s,t), (x,snd a,t) >> snd (mkex A B sch (snd a,exA) (t,exB)))"; |
114 \ ((s,t), (x,snd a,t) >> snd (mkex A B sch (snd a,exA) (t,exB)))"; |
115 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
115 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
116 by (cut_inst_tac [("exA","a>>exA")] mkex2_cons_1 1); |
116 by (cut_inst_tac [("exA","a>>exA")] mkex2_cons_1 1); |
117 by Auto_tac; |
117 by Auto_tac; |
118 qed"mkex_cons_1"; |
118 qed"mkex_cons_1"; |
119 |
119 |
120 Goal "!!x.[| x~:act A; x:act B |] \ |
120 Goal "[| x~:act A; x:act B |] \ |
121 \ ==> mkex A B (x>>sch) (s,exA) (t,b>>exB) = \ |
121 \ ==> mkex A B (x>>sch) (s,exA) (t,b>>exB) = \ |
122 \ ((s,t), (x,s,snd b) >> snd (mkex A B sch (s,exA) (snd b,exB)))"; |
122 \ ((s,t), (x,s,snd b) >> snd (mkex A B sch (s,exA) (snd b,exB)))"; |
123 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
123 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
124 by (cut_inst_tac [("exB","b>>exB")] mkex2_cons_2 1); |
124 by (cut_inst_tac [("exB","b>>exB")] mkex2_cons_2 1); |
125 by Auto_tac; |
125 by Auto_tac; |
126 qed"mkex_cons_2"; |
126 qed"mkex_cons_2"; |
127 |
127 |
128 Goal "!!x.[| x:act A; x:act B |] \ |
128 Goal "[| x:act A; x:act B |] \ |
129 \ ==> mkex A B (x>>sch) (s,a>>exA) (t,b>>exB) = \ |
129 \ ==> mkex A B (x>>sch) (s,a>>exA) (t,b>>exB) = \ |
130 \ ((s,t), (x,snd a,snd b) >> snd (mkex A B sch (snd a,exA) (snd b,exB)))"; |
130 \ ((s,t), (x,snd a,snd b) >> snd (mkex A B sch (snd a,exA) (snd b,exB)))"; |
131 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
131 by (simp_tac (simpset() addsimps [mkex_def]) 1); |
132 by (cut_inst_tac [("exB","b>>exB"),("exA","a>>exA")] mkex2_cons_3 1); |
132 by (cut_inst_tac [("exB","b>>exB"),("exA","a>>exA")] mkex2_cons_3 1); |
133 by Auto_tac; |
133 by Auto_tac; |