isabelle


Error message in Isabelle/HOL


When applying the wrong tactic or the wrong deduction rule, the error message is usually too general:
Failed to apply initial proof method⌂
I am using Isabelle to teach natural deduction. When Isabelle complains, some students change the rule/tactic arbitrary without reflecting on the possible causes of the error. A more detailed error message could be part of the learning process of Isabelle, I think.
How to make those error messages student friendly? Does that require editing the source code or can it be managed by defining more expressive tactics of natural deduction?
Tactics in Isabelle can be thought of as chainable non-deterministic transformations of the goal state. That means that the question of what specifically caused a tactic to fail is difficult to answer in general, and there is no mechanism to track such information in Isabelle's tactic system. However, one could relatively easily modify existing tactics such that they can optionally output some tracing information.
However, I have no idea what this information should be. There are simple tactics such as rule where the reason why applying it fails is always that the rule that it is given cannot be unified with the goal (and possibly chained facts), and there are similarly simple tactics like intro, drule, frule, erule, and elim. Such unification-related problems can be debugged quite well sometimes using declare [[unify_trace_failure]], which prints some tracing information every time a unification fails.
With simp and auto, the situation is much less clear because of how many different things these methods can do. Essentially, when the proof method could not be applied at all, it means that ‘none of the things that simp and auto can do worked for this goal’. For simp, this includes simplification, splitting, linear arithmetic, and probably a lot more things that I forgot. For auto, it additionally includes classical reasoning with a certain search depth. One cannot really say easily what specific thing went wrong when these methods fail.
Some specialised tactics do print more specific error messages if something goes wrong, e.g. sat and smt sometimes print a special error message when they have found a counterexample to the goal, but I cannot even imagine what more helpful output for something like simp or auto would look like. If you have an idea, please do tell me.
I think this problem cannot really be solved with error messages; one must simply get to know the system and the tactics one uses better and understand what they do and when they fail. Perhaps it would be good to have a kind of catalogue of commonly-used tactics that mentions these things.

Related Links

Termination proof for function on datatype involving a map
Isabelle HOLCF doesn't understand fixrec
Isabelle function to find the longest sequence of members of a relation
Is it possible to run Isabelle 2005 proofs with Proof General?
Multicast using Isabelle
Mutual recursion in primcofix
How to prove that addition of a new variable to the expression doesn't change its semantics?
How to define functions with overlapping patterns?
Non-terminating inductive predicates
Parts of mathematics not yet formalized / Isabelle wishlist
Instantiating theorems in Isabelle
Proving a basic identity in Isabelle
Error in an Isabelle function definition taken from lecture notes
Proving the cardinality of a more involved set
Function returns 0 when it should return 1, eliminating parantheses
Isabelle return numbers instead of Suc(Suc( … 0 ))

Categories

HOME
zeromq
c#-4.0
comparison
stock
iot
grep
react-router
google-docs
jira
yahoo-oauth
react-redux
microservices
uber-api
pheatmap
slick-slider
gnupg
adobe-analytics
correlation
alignment
worldwind
pythonanywhere
visual-composer
dbext
swiftlint
kryo
ml
riot.js
mps
facebook-instant-articles
extjs5
react-css-modules
entitlements
rst2pdf
assistant
jaxb2
libuv
instant-messaging
skia
key-value-observing
xquery-3.0
create-table
atl
google-api-nodejs-client
main
dosbox
serve
multilingual
libraries
occlusion
temporary-files
email-templates
pdf-reactor
gulp-sourcemaps
segment
avconv
ionicons
font-size
android-cursor
lync-client-sdk
dwscript
vtigercrm
query-performance
eventkit
setuptools
removechild
moveit
prettytensor
hexdump
dataview
coveralls
wyam
muse
interrupted-exception
mono-embedding
sniffer
jsapi
device-orientation
system.reflection
asp.net-dynamic-data
file-copying
wordpress-theme-customize
openexr
uitouch
centos5
runtime.exec
ora-00911
eclipse-memory-analyzer
hosts-file
ocx
infobox
f#-powerpack
subviews
digest-authentication
castle-monorail
bespin
photoshop-cs4
swing-app-framework
procedural-music
gacutil
django-notification

Resources

Mobile Apps Dev
Database Users
javascript
java
csharp
php
android
MS Developer
developer works
python
ios
c
html
jquery
RDBMS discuss
Cloud Virtualization
Database Dev&Adm
javascript
java
csharp
php
python
android
jquery
ruby
ios
html
Mobile App
Mobile App
Mobile App