[isabelle-dev] Pending sort hypotheses
Makarius
makarius at sketis.net
Thu Jul 2 13:17:33 CEST 2009
On Thu, 2 Jul 2009, Amine Chaieb wrote:
> Many thanks for the explanation. Indeed, if I make Abstract_Rat import
> say Complex_Main, the proofs work without the sort assumption. This must
> be due to the fact that concrete instances of field (I think) come only
> after Main.
The proofs in Abstract_Rat implicitly depend on *some* actual instances of
the abstract structure being around. By including suitable concrete
versions, the implicit "strip_shyps" mechanism of Isabelle/Pure will
remove redundant constraints.
The SORT_CONSTRAINT notation explained in the NEWS/manuals of Isabelle2009
allows to state extraneous sort assumptions explicitly, so one can do this
kind of pseudo-abstract reasoning without relying on accidental concrete
instances.
>> That's exactly right. Theorems need to have sort hypotheses to prevent
>> proofs like this:
>> class impossible =
>> assumes impossible: "EX x. x ~= x"
>>
>> lemma False: "False"
>> proof -
>> obtain x :: "'a::impossible" where "x ~= x"
>> using impossible ..
>> then show "False" by simp
>> qed
>>
>
> I have nothing against proofs like this one, but I agree that it is a
> matter of taste.
Do you mean you want to be able to prove False unconditionally?
Makarius
More information about the isabelle-dev
mailing list