Isabelle is a generic framework for interactive theorem proving. Its meta-logic Isabelle/Pure allows to define a broad range of object-logics, one of them being Isabelle/HOL. As you already hinted, the symbol ∀
is Isabelle/HOL's universal quantifier and the symbol ⋀
is Isabelle/Pure's universal quantifier. Also, the symbol ⟹
is Isabelle/Pure's implication. The operator precedence rules state that ⋀
has lower precedence than ⟹
, and ∀
has higher precedence than ⋀
and ⟹
. Therefore ⋀ x. P x ⟹ P 0
is actually parsed as ⋀ x. (P x ⟹ P 0)
(which clearly doesn't hold) instead of (⋀ x. P x) ⟹ P 0
, so you need to explicitly parenthesize the proposition ⋀ x. P x
. Then, your lemma can be trivially proved using the usual elimination rule for ⋀
in natural deduction as follows:
lemma "(⋀ x. P x) ⟹ P 0"
by (rule meta_spec)
In order to try to avoid this kind of nuances, I'd suggest you to adopt the Isabelle/Isar style for stating your lemmas, namely the following:
lemma
assumes "⋀ x. P x"
shows "P 0"
using assms by (rule meta_spec)
Please refer to Programming and Proving in Isabelle/HOL and The Isabelle/Isar Reference Manual for more information.