A Logic-Independent IDE
Florian Rabe
Computer Science, Jacobs University Bremen
UITP @ FLoC 2014
1
A Logic-Independent IDE Florian Rabe Computer Science, Jacobs - - PowerPoint PPT Presentation
A Logic-Independent IDE Florian Rabe Computer Science, Jacobs University Bremen UITP @ FLoC 2014 1 Introduction MMT+jEdit = Logic-Independent IDE MMT prototypical declarative language Foundation-independent no commitment to
1
◮ prototypical declarative language ◮ Foundation-independent ◮ no commitment to particular logic or logical framework
◮ concise and natural representations of wide variety of formal
◮ focus on customizable, reusable services ◮ written in Scala
◮ mature general purpose text editor ◮ written in Java
◮ jEdit plugin that bundles MMT API ◮ relatively thin glue layer between MMT and jEdit
2
◮ prototypical formal declarative language ◮ foundation-independent: no commitment to particular logic or
◮ admits concise representations of most formal systems
◮ continuous development since 2006 (with Michael Kohlhase) ◮ > 100 pages of publication
◮ API and services ◮ continuous development since 2007 (with > 10 students) ◮ > 30, 000 lines of Scala code ◮ > 10 papers on individual aspects 3
4
5
◮ fixed logical foundational
◮ fixed kernel implementation for it
◮ as many features on top as developer community can afford
◮ slow evolution ◮ isolated systems ◮ hard to get new systems to meaningful scale
◮ foundation-independent wherever possible ◮ develop generic solutions at MMT level ◮ Very similar to logical framework
6
7
◮ use MMT data structures for knowledge representation
◮ use jEdit as UI framework ◮ design abstract interface for kernel functionality
8
9
◮ parses only outer syntax
◮ leaves terms as strings
◮ parsing units generated by structure parser ◮ called at the liberty of the UI
◮ identifier scopes ◮ theory graph
◮ validation units generated by structure validator ◮ type reconstruction, proof obligations, etc.
10
11
12
13
14
15
◮ string ◮ parsed ◮ validated
◮ type of any declaration ◮ definiens (= proof) of any declaration
◮ reparse ◮ revalidate ◮ revalidate all depending validation units 16
◮ plugins register individual keywords and handlers 17
18
◮ validity check of A ◮ type check of t against A
◮ if term validator returns dependencies, jMmt revalidates only
◮ t changes much more often than A ◮ checking t (= proofs) and A (= assertion) separately splits
19
◮ solves unknown meta-variables inserted by term parser ◮ returns dependencies
◮ module system ◮ shallow polymorphism ◮ literals ◮ modulo 20
◮ no native theorem proving support in MMT ◮ no connection of abstract kernel interface and existing proof
◮ experimental languages ◮ new languages ◮ small communities 21