Plan and priority list for CoFI tool activities
************************************************
************************************************
Suchfunktion f�r einen Knoten im DG:
welche anderen Knoten sind hier mit Theoriemorphismus abbildbar?
erstmal auf eine Logik (
z.B. CASL) beschr�nken
- Funktion f�r Morphismus-Suche zwischen Theorien
BasicProof in
Proofs.Proofs: sind Datenstrukturen f�r informelle Beweise OK?
Konfidenzgrade von Beweisen?
Beweisobjekte an DGs, nicht an Regeln -- done
F�r Theoreme in Theorien an Beweisobjekte -- done
BasicProof mit Liste von Beweisobjekten -- �berfl�ssig
Definitionen auszeichnen -- done
F�r alles siehe G_theory, ThSens und SenStatus.
Isabelles Beweisobjekte einbinden
************************************************
************************************************
Hets needs to be equipped with a command-line interface that reads in
specification libraries and proof commands
Proof commands are special annotations in the libraries
All menu commands of the development graph interface (GUI/...) should become (proof) commands
when stepping through the specs, dg calculus generates proof obligations
(for the current dg node only),
which then can be discharged by Isabelle, SPASS etc.
That is, the proof commands always occur at the position in the text
that generates the dg node?!? or should they occur after each specification?
needs incremental parsing and static analysis for Hets libraries
easy: parse and analyse one specification at a time, and then process it with proof commands
more challenging: incrementally parse and analyse also individual specifications
************************************************
************************************************
see Chapter 4 of "The Description Logic Handbook"
and ask Klaus for a print out of it
possibly also modal logic in CoCASL
**************** task A ************************
Proofs with Isabelle and SPASS
- improve simplifier for partiality in Isabelle coding
program interaction between solver, subgoaler and simplifier in such a way
that proofs of definedness conditions are postponed
************************************************
************************************************
Modelchecker f�r algebraische Eigenschaften
hets -n NonAssocRelationAlgebra
modelCheck :: SIMPLE_ID -> (Sign f e, [Named (FORMULA f)])
Warnung mit Gegenbspen ausgeben, wenn eine Eigenschaft nicht gilt
(abbrechen nach 10 Gegenbspen)
Range aus den CASL-FORMULAs extrahieren
Result ist eine Monade, ggf. mit do-Notation arbeiten
Pr�fung der G�ltigkeit von CASL-Formel in einer Table, rekursiv:
Allquantoren --> all, Existenzquantor --> any
CASL-Junktoren --> Haskell-Junktoren
Terme rekursiv auswerten, Operationen aus der Table nehmen
Aufgabe von Shi Hui: XML-Anfragen mit DCC-Ausdr�cken an Bremer Solver schicken
- Vorverarbeitung f�r Solver (
z.B. Duplikate raus)
- Shi soll auf Freiburger XML-Format umsteigen (ggf. mit XSLT)
XML --- |---- Franz�sischer Solver
| |-- Hets -- Bremer Solver
(HaXML: kann Haskell-Datenypen in DTDs umwandeln)
Qualitative Constraint-Kalk�le (siehe Thomas)
CASL (siehe Paper T. Mossakowski: Relating CASL with Other Specification Languages:
the Institution Level Theoretical Computer Science 286, p. 367-475, 2002.)
CASL-Formeln nur ganz kurz
Signaturen, Signaturmorphismen (aus CASL)
optional: Erf�lltheitsbedingung
M |= sigma(phi) <=> M|_sigma |= phi
f�r Signaturmorphismus sigma:Sigma_1->Sigma_2
M \in Mod(Sigma_2), phi\in Sen(Sigma_1)
Formalisierung von Kalk�len in ConstraintCASL
Constraint-Solver (auch in ihren Eigenheiten)
�bersetzungen zwischen den verschieden Formaten
ConstraintCASL -> Bremer Solver
Bremer Solver -> ConstraintCASL
Parser (mit Parsec), der Kompositionstabelle des Bremer Solvers
parsiert und ConstraintCASL-Spec (abstrakte Syntax) zur�ckgibt
Das kann das als Option in Hets eingebunden werden (Christian Maeder)
Freiburger Constraint-Solver angucken im Juli
�bersetzungen bis 31. Juli
************************************************
************************************************
OmDoc-Ausgabe konform mit RelaxNG?
OmDoc-Ausgabe Immanual zeigen
Typen von gebundenen Variablen weglassen
Hets <-> Datenstruktur <-> OMDoc
Ursprung von Symbolen bei Hets -> OMDoc: irgendeins nehmen
Ausgabe als DAG, mittels OMR oder ref
Sharing-Algorithmus verwenden
Constraints mit Indizes: ggf. higher-order-Axiom erzeugen (Till fragen)
Anzeigen von lokalen Beweiszielen bei nicht-gesetztem Cons: Till fragen
free type Vehicle ::= sort Boat | sort Car
wobei Boat und Car aus anderen Files kommen
S. 156: Satz einfach streichen
sortdef legt bereits ein Symbol an
werden Signatur-Symbole in OMDoc mit der Theorie versehen, in der
sie als erstes eingef�hrt wurden?
checken f�r Library-Importe
Hiding: unterschiedlich in OMDoc und Hets
ein Hets-Hiding-Link mit einer Inklusion Sigma_1->Sigma_2 als
wird �bersetzt in einen OMDoc-Theoriemorphismus
Sigma_2 \ Sigma_1 versteckt werden
Wenn der Signaturmorphismus keine Inklusion ist, ist keine
�bersetzung m�glich -> Fehler
ein OMDoc-Theoriemorphismus mit Hiding, der eine Inklusion ist
(also leere bzw. identische Abbildung) wird �bersetzt
in einen Hets-Hiding-Link, mit Inklusion als Signaturmorphismus
falls der OMDoc-Theoriemorphismus keine Inklusion ist, muss
ein Hets-Hiding-Link, gefolgt von einem normalen (globalen) Link,
der dann die Umbenennung macht, erzeugt werden
Logiken: �ber verschiedene OMDoc-Theorien mit URI
************************************************
************************************************
- CASL-Logik: "Relating CASL with other specification languages", S.401-408
- Konservative, definitionale und monomorphe Erweiterungen, Konsistenz
siehe CASL reference manual (suche nach conservative)
- warum sind konservative Erweiterungen wichtig?
- um zu pr�fen, ob Spezifikationen konsistent sind, also implementiert
- Algorithmen zur Pr�fung von Erweiterungen, ob diese konservativ,
definitional oder monomorph sind
- Beschreibung des Algorithmus in Pseudocode
- Korrektheitsbeweis,
d.h. f�r die Erweiterungen, die der Algorithmus
als konservativ erkennt, muss f�r jedes Modell der kleineren
Spezifikation eine Modellerweiterung zur gr��eren Spezifikation
gefunden werden.
Z.B. im Falle von free types kann dies eine
Termalgebra-Konstruktion sein.
konservativ: jedes SP_1-Modell M1 hat eine Erweiterung zu einem
SP2-Modell M2 mit M2|_\sigma=M1.
Funktionen imageOfMorphism und inhabited
"free datatypes and recursive equations are consistent"
checkFreeType :: Morphism f e m -> [FORMULA f] -> Maybe Bool
Just True => Yes, is consistent
Just False => No, is inconsistent
call the symbols in the image of the signature morphism "new"
- each new sort must be a free type,
i.e. it must occur in a sort generation constraint that is marked as free
(Sort_gen_ax constrs True)
such that the sort is in srts, where (srts,ops,_)=recover_Sort_gen_ax constrs
if not, output "don't know"
and there must be one term of that sort (inhabited)
i.e. the f resp. the p in
forall x_1:s_n .... x_n:s_n . f(t_1,...,t_m)=t
forall x_1:s_n .... x_n:s_n . phi => f(t_1,...,t_m)=t
Implication Application Strong_equation
forall x_1:s_n .... x_n:s_n . p(t_1,...,t_m)<=>phi
forall x_1:s_n .... x_n:s_n . phi1 => p(t_1,...,t_m)<=>phi
Implication Predication Equivalence
if there are axioms not being of this form, output "don't know"
check' :: [EquationInfo] -> ([ExhaustivePat],EqnSet)
check' [] = ([([],[])],emptyUniqSet)
-- nur ein Pattern, bestehend aus nur Variablen? fertig, True
check' [EqnInfo n ctx ps (MatchResult CanFail _)]
| all_vars ps = ([(takeList ps (repeat new_wild_pat),[])], unitUniqSet n)
-- besteht das erste Pattern nur aus Variablen? dann darf es kein zweites geben!
check' qs@((EqnInfo n ctx ps (MatchResult CanFail _)):rs)
| all_vars ps = (pats, addOneToUniqSet indexs n)
(pats,indexs) = check' rs
-- falls ein Konstruktor dabei ist: split_by_constructor
-- wenn die ersten Argument nur Variablen sind: first_column_only_vars
check' qs@((EqnInfo n ctx ps result):_)
| all_vars ps = ([], unitUniqSet n)
| constructors = split_by_constructor qs
| only_vars = first_column_only_vars qs
| otherwise = panic "
Check.check': Not implemented :-("
-- Note: RecPats will have been simplified to ConPats
constructors = or (map is_con qs)
only_vars = and (map is_var qs)
subsort definitions: are conservative if formula is satisfiable
(generate proof obligation)
************************************************
************************************************
show hets output immediately
when hets terminates abnormally (
e.g. with a fail), emacs loops
C-n jumps to the next error, but the message windows is not always scrolled
in such a way that the error is at the top (for long error lists)
should work with parser error messages as well (adapt these?)
************************************************
************************************************
look at command line interface (just call hets)
implement simplified rule Theorem-Hide-Shift
If there is an open global theorem link sigma:N1->N2 and
a hiding definition link theta:N3->N2 (
i.e. the signature
morphism theta is from Sig(N2) to Sig(N3)), then prove
this theorem link by inserting a new global theorem link
(when doing Automatic, HideTheoremShift, Automatic, and then
issue warning whne displaing theories (or performing proofs) of
nodes with ingoing hiding links.
improve dependency tracking for development graph proofs
display proved theorem links that depend on pending other proofs in yellow
display normal form of nodes with ingoing hiding links
weakly amalgamable cocones
development graph calculus
(see Sect. IV:4.4 of the CASL Reference Manual)
test command line interface (just call hets)
test development graph GUI:
node menu: show just subtree / undo
interaction with edit - proofs - automatic?
use update of uDrawGraph-nodes,edges instead of erasing and adding nodes
for attribute changes like color
restrict proofs: only one prove window per node at a given time
************************************************
************************************************
generate (x)html code from Doc
generate more readable LaTeX-code
************************************************
************************************************
make modules hierarchical, replace deprecated code (
i.e. FiniteMap, hslibs),
use HaXml as a cabalized library, provide uni as (one?) cabal
package(s), uni used to work under windows as well, watch the
i.e. FilePath, Process discussions (libraries@haskell.org)
possibly switch to a subversion repository, talk to Achim
************************************************
************************************************
lade CASL-Datei neu ==> neuer Entwicklungsgraph
vergleiche alten+neuen Entwicklungsgraph, konstruiere eine
(jeweils eine Abblidung f�r Knoten und eine f�r Kanten)
Kriterien f�r Finden der Knotenabbildung:
einfaches Merge von lokalen Beweisen eines abgespeichteren DG
************************************************
************************************************
refined graph of Haskell module dependencies
************************************************
************************************************
port hets to windows. -- costs too much energy at this stage! Till
If hets should become successful then requests for support under
windows will surely follow.
Ghc, uni and uDrawGraph should work under windows. Only Isabelle does
not exist for windows, but SPASS does. Probably only a few path
computations need to be adapted (made modular) within hets. Also
position computations (of Parsec) should be checked under windows.
************************************************
************************************************
set up a ticket and tracking systems (for bugs and features) instead
refactoring of dgraphs: add unique tags + hashes (but no table)
how to compare complex datastructures:
tag x1==tag x2 || (hash x1==hash x2 && x1==x2)
(make it really abstract), possibly contact amahnke@tzi.de regarding
set up default simplifier
set up default tactics using axioms
************************************************
************************************************
generate infrastructure for circular coinduction
CCS example: commutativity of || by coinduction
************************************************
************************************************
- improve display syntax in HasCASL-Isabelle coding
- identifiers in mixfix templates must be excluded as ordinary
identifiers (
i.e. as quantified variables)
collect the patches for programatica (or create a package)
- conv (SN i p) = PN i (S p)
+ conv (SN i p) = PN i (Sn (show i) p)
fixes translation error of Pair
simplification of HasCASL sentences (omit types)
logic coding from the comand line with printing of results
Haskell modules: hiding, renaming
i.e. the f resp. the p in
forall x_1:s_n .... x_n:s_n . phi => f(t_1,...,t_m)=t
forall x_1:s_n .... x_n:s_n . phi1 => p(t_1,...,t_m)<=>phi
if there are axioms not being of this form, output error
Static analysis for HasCASL
pattern analysis for program equations
implemented only atomic subtyping
Weak amalgamation analysis?
Instantiate Transformation Application system for HasCASL?
Automatic generation of Haskell (for a HasCASL subset)
Coding HasCASL -> Isabelle with definedness axioms
only strict functions are defined
One emacs with spec and proof buffer
Reload button should rebuild buffers while keeping as much as possible
keep structuring of Hets theories
************************************************
************************************************
implement a catch for calling MathServ based on the catch in runSpass
- a "connection refused" error should be handled differently:
"MathServ not running! Please contact
<hets-devel@informatik.uni-bremen.de>"
for the transition to ghc-6.6 spassProve must be corrected
- the regexp library changed in functionality
maybe the parse of the proof tree should be done without regular
- use seq to force the evaluation of the proof trees while in
GenericATP window otherwise "Exit prover" takes a long time
Example: seq (length $ show $ prooftree proofStatus) proofStatus
- forceFocus to read-only textedit widgets in textSaveDisplay windows
also add for Details window
- update of goal list-boxes should not longer move visible
involves getting and setting of visible area
code cleanup and documentation where necessary and possilbe
mark imported theorems for selection
somewhere in computeTheory implement setting of wasTheorem
if wasTheorem not appears with right status in ProofManagementGUI
and adapt conversion functions of SenStatus to Named and vice
Mark old theorems in "Axioms to include" Listbox with prefixed
add button "Deselect former Theorems"
all nodes without incoming heterogeneous edges are provable with
************************************************
************************************************
trace if liniarity of sentences along development is given
for consistency checking with Isabelle, look at the following SAT-Solvers:
Consistency checker interface
via global interface, accessible from global and node menus
use falseSentence from
Logic.Logic (property: holds in no model)
disproved -> consistent (assuming completeness)
batch mode for automatic provers such as SPASS
(use automatic flag for provers)
batch interface for Isabelle
each goal is proved separatedly, with a time limit enforced
"using Ax1 ... Axn by auto"
where Ax1 ... Axn is the list of all axioms.
"auto" could be replaced with "best", "blast" etc. (user selection)
Ignore axiom selection for interactive provers
Translation between Achim's ontology data structure and CASL (in Hets)
visualization of "taxonomy" of CASL signatures
(subsorts = inheritance, unary preds = concepts, binary preds = relations)
last two ... partially done
Recognize guarded fragment of CASL:
G ::= forall x . At(x) => G where At is a conjunction of atoms
Joost Visser wg. ATerms in Haskell => neues Repository
************************************************
************************************************
Weitere %implies-Annotationen zu den Basic Datatypes hinzufuegen
(Vorbild: Larch-Handbuch)
Parser and static analysis for CSP-CASL
************************************************
************************************************
Integration with generic prover interface?
************************************************
************************************************
enhance Web interface with SPASS (%implied, consistency)
translation of proofs along comorphisms (it this necessary at all???)
leads to translation of G_theory along comorphism that also
this may be used in GUI prover interfaces for recovering old proof attempts
and offering them as default
proveCMDLinteractive (PGIP)
Model expansion flag for comorphisms
Umlaute in daVinci anzeigen
werden Links in der richtigen Reihenfolge geschrieben (S. 183 OMDoc)?
was ist dort eigentlich das Problem?
semantic adequecy of HOL translation
Regulate concurrent proving
.dg files: store only current library; import .dg files for other libraries
Isabelle: use meta-quantifiers
check for proved theorems
AbstractGraphView: switch to Result monad
unite or rename consCheck and cons_checkers
computeTheory does not work across library imports
hierarchical Isabelle theories
daVinci printing is not adequate
hiding of internal nodes does not work
FOL without quantifiers and with uniform disjunctions
algorithmic path consistency over a relation algebra
plug in reasoner for this
develop correctness results (algorithmic path consistency=path consistency)
FOL without quantifiers (with and without =)
Robinson consistency with shared theory constructed via pre-image?
show theorem links between same instances of different parameterized
specs (where one is an extension of the other one)
link menu for %implies, $def, %cons, even without open proof obligation
for a proved theorem, show minimal part of DG needed for proof
cons, def, mono for nodes
Isabelle interface: each qed should write proof info into file
globally display nodes containing symbols mapped "twice" (
i.e. via
different signature morphisms)
and add a menu for each node allowing for tracking the different
topsort coding: partial functions as relations?
theorem link menu for proof obligations
in Isabelle. Reason: Inlineaxioms does not translate ga_totality axioms
Fail: illegal node type in sublogic computation
J�rgen Zimmer, Saarbr�cken+Edinburgh, Beweiserkennung f�r versch. Logiken im MathWeb
for CSP-CASL example: with logic
theorem links between nodes in different libraries
basicProofs: use info about used axioms
Overload / inlineAxioms: injections
remove "prove" menu in abstracted dg
better sublogic analysis in codings
adjust path for thy files, such that hets can also be started from subdirs
Restrict Sonjas simplifications to HasCASL
add suitable axioms to simplifier and CR
computeTheory: remove double axioms
add suitable axioms to simplifier and classical reasoner
better display of internal nodes (use tooltip?)
update Hets, CASL, daVinci on web page
CASL2PCFOL: x_i -> t_i, t=[inj(x_i)] (and what not!)
packing of binaries: add hets-update, refer to TclTk
test for sublogic before applying comorphism
Missing points for heterogeneous WADT 04 example:
- coding to Isabelle: translate sort gen constraints
- Improve adapation to Isabelle's lexis
Isabelle: (ask Christoph)
remove datatypes from sort list
prove local thm link (=> green)
"prove" menu with choice windows
sublogic translation table
better interaction between Isabelle instance (for one node)
+ selection of single goals that are proved
=> use PGIP interface (Christoph, David)
Keep proofs and lemmas in .thy files (kind of merge)
CASL annotation for lemmas that should be used in proof
inherit CASL's mixfix syntax
Signatures versus theories: where to store additional infos?
comp(id,x)=x for comorphism names
Mixfix analysis + typecheck for modality axiomatizations
Modal logics: modal logic, temporal logic, mu calculus
+ translations (
e.g. modal to FOL)
CASL->Haskell with free DTs (mark sortgens) + recursion
- List[Dec] wird List[Pos]
- node numbers do not match
- thm links with external target should be provable as well
Different types of logic translations
Improve Static analysis of structured specs
Development graph calculus, Strategies for DG rules
use graph grammars to model rules? transformation units?
FOL-prover by Uli Furhbach
modal logic: IRIT, Toulouse. Tableaux prover LOTREC, Andreas Herzig
Renate Schmidt, Manchester: uses FOL prover for description logic
(as efficient as DL-specific tools!)
consistency: see IJCAR-workshop on non-provability in Cork
IJCAR workshop about logical frameworks and meta-languages
Klaus' wayfinding example
ask Detlef: critical pairs, Fossacs paper by Francesco
first steps towards CASL instance, using ATerms and re-using MMISS instance
variants for specs (needed for DOLCE: CASL variant, DL variant, ...)
+ for TAS: reflection of HOL in HOL, to be composed with encodings
(
i.e. signatures, axioms, signature morphisms in HOL,
re-use ML signatures) (Einar)
Display Specs as daVinci subgraphs
************************************************
************************************************
Hets interactive (provide cmd line interface, but hold loaded libraries in memory, provide switch to context of spec, and type checking of expressions, interaction with emacs mode)
Packaging of installation
with Eclipse, WXHaskell or GTk?
how to integrate with event system of UniForM workbench?
integrate graphviz (or use Java interface for racer? or Isabelle browser? or...?)
Data.Serizable (only when ghc supports it) better: rely on pointer equality
integrate QuickCheck: come to lecture!
++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++
Mark-Oliver Stehr, Hamburg cf. HOL-Nurpl-Translation in Maude
Proofs with basic datatypes
Verbesserung der Fehlermeldungen
Example of Agnes und Frank: proofs in HOL-CASL (2 days)
Examples for cond rewriting -> Christophe
Doku: VSE-Prover, VSE-Method VSE-demo in Bremen?
Eigene IsaWin-Instanz mit CASL-RS statt HOL-RS
Encoding of structured free (3 days)
Encoding of structured cofree (2 weeks)
Eingabesyntax als Mix zwischen CASL und HOL (3 days)
Adapt Isabelle unions to CASL unions (1 week)
Generate Proof obligations (1 week)
Add renaming to Isabelle kernel (2 months)
Repository mit korrekten und fehlerhaften Specs
HetCATS User manual, Doku fuer Environments (2 weeks)
Comparsion of parsers (ML-yacc parser, SDF-Parser)
Conversion-Tool CASL 1.0 => CASL 1.0.1 komplettieren
PVS anbinden (Kooperation mit Cachan?)
Portations: Intel-Solaris, Mac OS-10 (2 weeks)
(X)Emacs mode for CASL, hide Display Annotations (2 weeks) -> Raffael Sturm
Uebersetzung von CASL-LaTeX-Spezifikationen nach ASCII
Neues Tool-Schaubild auf Web-Seiten ver�ffentlichen
{- This does not work due to needed ordering:
instance Functor Set where
m >>= k = unionManySets (setToList (fmap k m))
[("normal","normal","normal"),
("normal","inclusion","normal"),
("inclusion","normal","normal"),
("inclusion","inclusion","inclusion")]
Aufbau des Graphen selbst