FIXME-TODO
author Cezary Kaliszyk <kaliszyk@in.tum.de>
Wed, 06 Jan 2010 08:24:37 +0100
changeset 814 cd3fa86be45f
parent 794 f0a78fda343f
child 866 f537d570fff8
permissions -rw-r--r--
Sledgehammer bug.

Highest Priority
================

- better lookup mechanism for quotient definition
  (see fixme in quotient_term.ML)

- check needs to be fixed in mk_resp_arg (quotient_term.ML),
  see test for (_, Const _)

- clever code in quotiet_tacs.ML needs to be turned into
  boring code

- comment about regularize tactic needs to be adapted

- Check all the places where we do "handle _"
  (They make code changes very difficult: I sat 1/2
  a day over a simplification of calculate_inst before
  I understood things; the reason was that my exceptions
  where caught by the catch all. There is no problem
  with throwing and handling exceptions...it just must
  be clear who throws what and what is thrown.)


Higher Priority
===============

- If the user defines twice the same quotient constant,
  for example funion, then the line 

    val Free (lhs_str, lhs_ty) = lhs

  in quotient_def raises a bind exception.

- If the constant definition gives the wrong definition
  term, one gets a cryptic message about absrep_fun

- have FSet.thy to have a simple infrastructure for 
  finite sets (syntax should be \<lbrace> \<rbrace>,
  look at Set.thy how syntax is been introduced)

- Handle theorems that include Ball/Bex. For this, would 
  it help if we introduced separate Bex and Ball constants 
  for quotienting?

- The user should be able to give quotient_respects and 
  preserves theorems in a more natural form.


Lower Priority
==============

- Maybe a quotient_definition should already require
  a proof of the respectfulness (in this way one
  already excludes non-sensical definitions)

- accept partial equivalence relations

- think about what happens if things go wrong (like
  theorem cannot be lifted) / proper diagnostic 
  messages for the user

- inductions from the datatype package have a strange
  order of quantifiers in assumptions.

- wrapper for lifting ... to be used as an attribute

- find clean ways how to write down the "mathematical"
  procedure for a possible submission (Peter submitted 
  his work only to TPHOLs 2005...we would have to go
  maybe for the Journal of Formalised Mathematics)

- add tests for adding theorems to the various thm lists

- Maybe quotient and equiv theorems like the ones for
  [QuotList, QuotOption, QuotPair...] could be automatically
  proven?

- Examples: Finite multiset.

- The current syntax of the quotient_definition is

      "qconst :: qty"
      as "rconst"

  Is it possible to have the more Isabelle-like
  syntax
   
      qconst :: "qty"
      as "rconst"

  That means "qconst :: qty" is not read as a term, but
  as two entities.