Il m'est venu à l'esprit qu'il y a plusieurs façons de traiter la quantification universelle en travaillant avec Isabelle/HOL Isar. J'essaie d'écrire des preuves dans un style qui convient aux étudiants de premier cycle à comprendre et à reproduire (c'est pourquoi j'utilise Isar!) Et je suis confus sur la façon d'exprimer la quantification universelle d'une manière agréable.Quantification universelle dans Isabelle/HOL
Dans Coq par exemple, je peux écrire forall x, P(x)
et ensuite je peux dire «induction x» et cela générera automatiquement des objectifs selon le principe d'induction correspondant. Cependant, Isabelle/HOL Isar, si je veux appliquer directement un principe d'induction, je dois énoncer le théorème sans quantification, comme ceci:
lemma foo: P(x)
proof (induct x)
Et cela fonctionne très bien x est alors traitée comme une variable schématique, comme si elle était universellement quantifiée. Cependant, il manque la quantification universelle dans la déclaration qui n'est pas très éducative. Une autre façon dont j'ai fonds est en utilisant \<And>
et \<forall>
. Cependant, je ne peux pas appliquer directement le principe d'induction si je déclare le lemme de cette façon, je dois d'abord fixer les variables quantifiées universellement ... qui semble encore peu pratique d'un point de vue pédagogique:
lemma foo: \<And>x. P(x)
proof -
fix x
show "P(x)"
proof (induct x)
Qu'est-ce que est un bon modèle de preuve pour exprimer une quantification universelle qui ne nécessite pas de fixer explicitement des variables avant l'induction?