src/HOL/Tools/TFL/usyntax.ML
changeset 38795 848be46708dc
parent 38786 e46e7a9cb622
child 38864 4abe644fcea5
equal deleted inserted replaced
38794:2d638e963357 38795:848be46708dc
   181   in list_comb(c,[mk_abs r])
   181   in list_comb(c,[mk_abs r])
   182   end;
   182   end;
   183 
   183 
   184 
   184 
   185 fun mk_conj{conj1,conj2} =
   185 fun mk_conj{conj1,conj2} =
   186    let val c = Const(@{const_name "op &"},HOLogic.boolT --> HOLogic.boolT --> HOLogic.boolT)
   186    let val c = Const(@{const_name HOL.conj},HOLogic.boolT --> HOLogic.boolT --> HOLogic.boolT)
   187    in list_comb(c,[conj1,conj2])
   187    in list_comb(c,[conj1,conj2])
   188    end;
   188    end;
   189 
   189 
   190 fun mk_disj{disj1,disj2} =
   190 fun mk_disj{disj1,disj2} =
   191    let val c = Const(@{const_name "op |"},HOLogic.boolT --> HOLogic.boolT --> HOLogic.boolT)
   191    let val c = Const(@{const_name HOL.disj},HOLogic.boolT --> HOLogic.boolT --> HOLogic.boolT)
   192    in list_comb(c,[disj1,disj2])
   192    in list_comb(c,[disj1,disj2])
   193    end;
   193    end;
   194 
   194 
   195 fun prod_ty ty1 ty2 = HOLogic.mk_prodT (ty1,ty2);
   195 fun prod_ty ty1 ty2 = HOLogic.mk_prodT (ty1,ty2);
   196 
   196 
   257   | dest_exists _ = raise USYN_ERR "dest_exists" "not an existential";
   257   | dest_exists _ = raise USYN_ERR "dest_exists" "not an existential";
   258 
   258 
   259 fun dest_neg(Const(@{const_name Not},_) $ M) = M
   259 fun dest_neg(Const(@{const_name Not},_) $ M) = M
   260   | dest_neg _ = raise USYN_ERR "dest_neg" "not a negation";
   260   | dest_neg _ = raise USYN_ERR "dest_neg" "not a negation";
   261 
   261 
   262 fun dest_conj(Const(@{const_name "op &"},_) $ M $ N) = {conj1=M, conj2=N}
   262 fun dest_conj(Const(@{const_name HOL.conj},_) $ M $ N) = {conj1=M, conj2=N}
   263   | dest_conj _ = raise USYN_ERR "dest_conj" "not a conjunction";
   263   | dest_conj _ = raise USYN_ERR "dest_conj" "not a conjunction";
   264 
   264 
   265 fun dest_disj(Const(@{const_name "op |"},_) $ M $ N) = {disj1=M, disj2=N}
   265 fun dest_disj(Const(@{const_name HOL.disj},_) $ M $ N) = {disj1=M, disj2=N}
   266   | dest_disj _ = raise USYN_ERR "dest_disj" "not a disjunction";
   266   | dest_disj _ = raise USYN_ERR "dest_disj" "not a disjunction";
   267 
   267 
   268 fun mk_pair{fst,snd} =
   268 fun mk_pair{fst,snd} =
   269    let val ty1 = type_of fst
   269    let val ty1 = type_of fst
   270        val ty2 = type_of snd
   270        val ty2 = type_of snd