144 (asm_simp_tac (HOL_ss addsimps [less_sprod2c RS conjunct2]) 1), |
144 (asm_simp_tac (HOL_ss addsimps [less_sprod2c RS conjunct2]) 1), |
145 (asm_simp_tac (HOL_ss addsimps [less_sprod2c RS conjunct2]) 1) |
145 (asm_simp_tac (HOL_ss addsimps [less_sprod2c RS conjunct2]) 1) |
146 ]); |
146 ]); |
147 |
147 |
148 qed_goal "trans_less_sprod" Sprod1.thy |
148 qed_goal "trans_less_sprod" Sprod1.thy |
149 "[|less_sprod(p1,p2);less_sprod(p2,p3)|] ==> less_sprod(p1,p3)" |
149 "[|less_sprod(p1::'a**'b,p2);less_sprod(p2,p3)|] ==> less_sprod(p1,p3)" |
150 (fn prems => |
150 (fn prems => |
151 [ |
151 [ |
152 (cut_facts_tac prems 1), |
152 (cut_facts_tac prems 1), |
153 (res_inst_tac [("p","p1")] IsprodE 1), |
153 (res_inst_tac [("p","p1")] IsprodE 1), |
154 (etac less_sprod1a 1), |
154 (etac less_sprod1a 1), |
155 (hyp_subst_tac 1), |
155 (hyp_subst_tac 1), |
156 (res_inst_tac [("p","p3")] IsprodE 1), |
156 (res_inst_tac [("p","p3")] IsprodE 1), |
157 (hyp_subst_tac 1), |
157 (hyp_subst_tac 1), |
158 (res_inst_tac [("s","p2"),("t","Ispair(UU,UU)")] subst 1), |
158 (res_inst_tac [("s","p2"),("t","Ispair(UU::'a,UU::'b)")] subst 1), |
159 (etac less_sprod2b 1), |
159 (etac less_sprod2b 1), |
160 (atac 1), |
160 (atac 1), |
161 (hyp_subst_tac 1), |
161 (hyp_subst_tac 1), |
162 (res_inst_tac [("Q","p2=Ispair(UU,UU)")] |
162 (res_inst_tac [("Q","p2=Ispair(UU::'a,UU::'b)")] |
163 (excluded_middle RS disjE) 1), |
163 (excluded_middle RS disjE) 1), |
164 (rtac (defined_Ispair RS less_sprod1b RS ssubst) 1), |
164 (rtac (defined_Ispair RS less_sprod1b RS ssubst) 1), |
165 (atac 1), |
165 (REPEAT (atac 1)), |
166 (atac 1), |
|
167 (rtac conjI 1), |
166 (rtac conjI 1), |
168 (res_inst_tac [("y","Isfst(p2)")] trans_less 1), |
167 (res_inst_tac [("y","Isfst(p2)")] trans_less 1), |
169 (rtac conjunct1 1), |
168 (rtac conjunct1 1), |
170 (rtac (less_sprod1b RS subst) 1), |
169 (rtac (less_sprod1b RS subst) 1), |
171 (rtac defined_Ispair 1), |
170 (rtac defined_Ispair 1), |
172 (atac 1), |
171 (REPEAT (atac 1)), |
173 (atac 1), |
|
174 (atac 1), |
|
175 (rtac conjunct1 1), |
172 (rtac conjunct1 1), |
176 (rtac (less_sprod1b RS subst) 1), |
173 (rtac (less_sprod1b RS subst) 1), |
177 (atac 1), |
174 (REPEAT (atac 1)), |
178 (atac 1), |
|
179 (res_inst_tac [("y","Issnd(p2)")] trans_less 1), |
175 (res_inst_tac [("y","Issnd(p2)")] trans_less 1), |
180 (rtac conjunct2 1), |
176 (rtac conjunct2 1), |
181 (rtac (less_sprod1b RS subst) 1), |
177 (rtac (less_sprod1b RS subst) 1), |
182 (rtac defined_Ispair 1), |
178 (rtac defined_Ispair 1), |
183 (atac 1), |
179 (REPEAT (atac 1)), |
184 (atac 1), |
|
185 (atac 1), |
|
186 (rtac conjunct2 1), |
180 (rtac conjunct2 1), |
187 (rtac (less_sprod1b RS subst) 1), |
181 (rtac (less_sprod1b RS subst) 1), |
188 (atac 1), |
182 (REPEAT (atac 1)), |
189 (atac 1), |
|
190 (hyp_subst_tac 1), |
183 (hyp_subst_tac 1), |
191 (res_inst_tac [("s","Ispair(UU,UU)"),("t","Ispair(x,y)")] subst 1), |
184 (res_inst_tac [("s","Ispair(UU::'a,UU::'b)"),("t","Ispair(x,y)")] |
|
185 subst 1), |
192 (etac (less_sprod2b RS sym) 1), |
186 (etac (less_sprod2b RS sym) 1), |
193 (atac 1) |
187 (atac 1) |
194 ]); |
188 ]); |
195 |
189 |
196 |
190 |