Ticket #311 (new task)

Opened 3 years ago

Last modified 7 months ago

keep structure when calling provers

Reported by: till Owned by: maeder
Priority: critical Milestone: 0.95
Component: development-graph Version: 0.66
Keywords: Cc: hutter@…

Description (last modified by luecke) (diff)

Try to keep as much development graph resp. theory structure as possible when calling a prover. There are (at least) the following types of provers:

  • provers supporting all CASL constructs. Then keep all the structure
  • provers supporting hiding and renaming, but not free. Then transform away free, using special dg rules
  • provers supporting renaming, but neither free nor hiding. Then transform away free, using special dg rules, and hiding, using normalization (i.e. shifting hiding to one single hiding at the top level)
  • provers supporting theory inclusions only. Then also renaming has to be transformed away
  • prover supporting flat theories only. Then proceed as before the implementation of this ticket.

Beware that these transformations interact with comorphisms. Properties of comorphisms are required for some transformations.

Also, take care of the problem that a theory Th1 may be coded differently (just because it is simpler) than its extension Th2, resulting in coded theories CTh1 and CTh2 that are based on different comorphisms. Ensure that CTh2 is not built from scratch, but as an extension of CTh1.

See also #137 and #508.

Change History

  Changed 2 years ago by maeder

  • milestone changed from 0.8 to 0.9

  Changed 2 years ago by till

  • description modified (diff)

  Changed 16 months ago by luecke

  • description modified (diff)
  • milestone changed from 0.9 to 0.93

  Changed 16 months ago by luecke

  • owner changed from till to stassiy
  • priority changed from major to critical

  Changed 10 months ago by maeder

  • cc hutter@… added
  • owner changed from stassiy to maeder
  • priority changed from critical to blocker

  Changed 10 months ago by maeder

  • status changed from new to assigned

follow-up: ↓ 8   Changed 10 months ago by maeder

Summarizing the current state:

  • CASL can be transformed to theory inclusions only, qualified, and translated to VSE.
  • the node menu "Prove Structured" calls VSE with the corresponding specifications and (plain) links.
  • example source:/trunk/VSE/test/Imports.casl

Missing features:

  • currently only the CASL2VSE comorphism is supported, it should be possible to (automatically) choose an appropriate comorphism as happens for the "Prove" node menu (i.e. for coding out subsorts or partiality)
  • the menus "Prove" and "Prove Structured" should be unified by generalization. Currently only the node is updated from which the prover was called, but other nodes should be updated, too, if the structured prover proofs corresponding lemmas (i.e. of imported nodes).
  • the logic VSE misses qualification methods that are needed to directly work on VSE. Since VSE is an extension of CASL this should be easier than ticket #602
  • for Isabelle also a structured prover needs to be set up.
  • there are a couple of bugs or missing optimizations when flattening development graphs (#508)

in reply to: ↑ 7   Changed 9 months ago by maeder

Replying to maeder:

Missing features:

[...]

* the logic VSE misses qualification methods that are needed to directly work on VSE. Since VSE is an extension of CASL this should be easier than ticket #602

This feature was implemented in changeset:11338 and changeset:11340

  Changed 7 months ago by maeder

  • priority changed from blocker to critical
  • status changed from assigned to new

I'm waiting for theorem links to be supported by hetsvse so that

hets -g VSE/test/rll.het

works after Edit->Proofs->Flattening->Heterogeneity on the node "list_impl" using "Prove VSE Structured"

Note: See TracTickets for help on using tickets.