Pure/tactic/compose_inst_tac: when catching exception THM, prints the
message before failing!! This reports the reason for failure in cases like
by (res_inst_tac [("P", "?Q(a)")] mp 1);
in which ?Q appears in mp with a different type.
Prod = FOL +
types "*" 2 (infixl 20)
arities "*" :: (term,term)term
consts fst :: "'a * 'b => 'a"
snd :: "'a * 'b => 'b"
Pair :: "['a,'b] => 'a * 'b" ("(1<_,/_>)")
rules fst "fst(<a,b>) = a"
snd "snd(<a,b>) = b"
end