[isabelle-dev] Metis vs. polymorphism

Makarius makarius at sketis.net
Tue Dec 30 16:06:20 CET 2014

Metis proof reconstruction is already known to have occasional problems 
due to polymorphism.  E.g. a long-pending question is how to avoid the 
various workarounds for Thm.bicompose that can be seen in Brownian motion 

changeset:   52225:568b2cd65d50
user:        wenzelm
date:        Wed May 29 18:55:37 2013 +0200
files:       src/HOL/Tools/Metis/metis_reconstruct.ML
resolve_inc_tyvars: back to old behavior before 0fa3b456a267 where types 
of equal Vars are *not* unified -- recover last example in 

A related or unrelated Metis breakdown happened after a slight reform to 
give it a proper proof context (115965966e15), such that internal tools 
may refer to configuration options from the context as expected.

A bad consequence of that were a handful of broken Metis proofs (one in 
main Isabelle, the rest in AFP).  E.g. see

changeset:   59166:4e43651235b2
user:        wenzelm
date:        Sun Dec 21 15:59:19 2014 +0100
files:       src/HOL/Cardinals/Cardinal_Order_Relation.thy
recovered metis proof after 115965966e15 (Odd clash of type variables!?);

In all these situations there were (redundant) polymorphic "uses" in the 
proof state, that could somehow cause a clash with schematic type 
variables inside Metis.  Presumably, Metis does not observe the Isabelle 
proof context with its notion of locally used names -- but this is really 
just a guess from a big distance from the actual code.

I did not change anything there, but repaired these very few proofs 
manually, by omitting the unused polymorphic facts.

There is probably no immediate need for further action, although someone 
who understands Metis proof reconstruction might want to clean up its 
internal treatment of locally generated types, to eliminate this potential 
of surprise.


                 http://stop-ttip.org  1,235,909 Participants

More information about the isabelle-dev mailing list