src/HOLCF/Sprod1.ML
changeset 961 932784dfa671
parent 892 d0dc8d057929
child 1168 74be52691d62
equal deleted inserted replaced
960:358a19a91d52 961:932784dfa671
   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