Towards Generic UIs - University of Essex

advertisement
Thoughts on Requirements and
Design of User Interfaces for
Proof Assistants
Norbert Völker
University of Essex, England
Background

Personal dissatisfaction




Toyed with idea of own UI project



Happy Isabelle/HOL hacker
Isabelle/Isar requires a user interface
ProofGeneral is a fantastic achievement but
still far from ideal
Observations
Interested in collaborations
Thanks to the anonymous referee
Overview




Towards Generic UIs
A case for requirements elicitation
Human-computer interface issues
Architectural and system design issues
Generic UIs

Community needs to use its sparse
resources more efficiently


Generic UIs



more reuse
separation of UI and proof assistant
find requirements by identifying common
features of proof assistant interaction
Generic components
Proof Assistant Interaction:
Common Features





Projects
Hierarchical sections (“theories”, …)
Logical context: constants, axioms,
types, sorts; proven theorems
Extra-logical context: configuration of
parsers, proof tools, display options, …
Persistence mechanism

saving and loading of projects/sections
Generic Proof Interaction






Pose a formula (“main goal”)
Proof steps: user issues proof commands that
change the proof state
Proof commands refer to proof tools,
theorems, subgoals, subterms, …
Proof state contains open goals and local
declarations and assumptions
Proof ends when no open goals left or abort
Proof attempts can possibly be nested
Towards Generic UIs

Generic user interfaces for families of
proof assistants are feasible


ProofGeneral
Even if you are building a UI for a
specific proof assistant, try and stay as
generic as possible in order to aid reuse

build to well documented interfaces!
Overview




Towards Generic UIs
A case for requirements elicitation
Human-computer interface issues
Architectural and system design issues
A Case for
Requirements Elicitation


Academic projects do seem to lack in
requirements elicitation
Suggestion



use case analysis
object identification
Again, try to stay generic
Use Case Analysis


Each use case abstracts over a set of
user-system interactions (“scenarios”)
that are performed in pursuit of a
certain aim.
Examples




Adding a constant to a theory
Backward proof
(Re)Load a theory
…
A Use Case Template [Larman]








Title of Use Case: …
Actors: …
Preconditions: …
Postconditions (Successful Outcome): …
Main Success Scenario: …
Alternative flows:
Special Requirements: …
Open Issues: …
Title of Use Case: Add a constant to a theory
Actors: Specifier
Preconditions: System in top-level or theory mode
Postconditions (Successful Outcome):
constant has been added to the theory
Main Success Scenario:
1. Specifier requests “Add constant”
2. System responds with a list of theories for
current project
3. Specifier selects a theory
4. System responds with a list of constants already
declared in theory and a form for entering the
new constants
4. Specifier enters the constant details and
submits the form
5. System adds constant to theory
6. The success of the operation is indicated by a
status message in the UI
Alternative flows:
1-3a. In theory mode, the specifier can also
request “Add constant to current theory”. In
this case steps 2 and 3 are omitted.
3b/5a. The specifier can cancel the process by
selecting a “cancel” option.
4 b. If the specifier denotes the theory by string
input, then the system checks …
Special Requirements: All text input forms should
allow copy-and-paste and support autocompletion
Open Issues: Should there be a syntax-directed
editor for input of the constant definition?
Domain Object Identification

Starting point: nouns in documentation
such as use cases, manuals, etc





project, theory, theory hierarchy, child
theory, parent theory
logical context, logical basis, extra-logical
context
axiom, theorem
formula, term, constant, type, sort
proof, goal, main goal, proof step, proof
command, proof state, open goal, …
A Structured Approach to Finding
Use Cases

Generic operations






creation of objects
modification of objects
inspection of the state of objects
making objects persistent
deletion of objects
Example “theorem” object:

create, rename, edit a proof, modify goal
and rerun proof, inspect, save, delete, …
The Role of Use Case Analysis





Identify interactions that the system
needs to support (efficiently, unit)
Describe key use cases in detail
Good starting point for UI design,
testing and user documentation
Valuable in practice despite criticism
Stress user-point of view

balance prover-functionality driven
development
Overview




Towards Generic UIs
A case for requirements elicitation
Human-computer interface issues
Architectural and system design issues
Principle of Least Effort


Context-sensitive auto-completion
Menus




only possible choices
recent used/frequently used/rarely used
sections
Suitable default values whenever a
choice has to be made
Reuse of previous inputs
Graphical Interaction


Hypertext can link information and actions
 theorems to proofs or to similar theorems
 linking a constant in a goal to its definition
 clicking unknown opens instantiation
dialogue
Drag-and drop for container operations
 move a theorem between theories
 build a theorem query from constants
 assemble theorem sets for proof tools
Proof by Pointing





Generation of proof scripts from a
“clicked proof”
Forward reasoning from goal premises
via a theorem (“destruct”/ “elim”)
Backward reasoning by resolution from
goal via a theorem
Apply assumption rule
Possible brittleness of proofs

positional versus pattern identification
Textual Interaction




Typing a short name versus selection
from long lists or via several submenus
Large proof trees can be difficult to use
Tougher interface might lead to better
planning of proofs/ proof procedures
UI should support both graphical and
textual interaction
Customisation by Users


Adaptation of menus, menu items, tool
bars, keyboard short cuts, etc
Adaptation of formatting





proof assistant outputs and UI elements
fonts, font sizes, window sizes, colouring,
pretty printer settings, …
mode dependent
Project level/ theory level/ proof level
Recognized as a regular use case
Overview




Towards Generic UIs
A case for requirements elicitation
Human-computer interface issues
Architectural and system design
issues
Basic Architecture


Paradigm: control centre with pluggable
components similar to IDEs
Assume separate UI


possibly distributed, heterogeneous
UI subsystems corresponding to roles




theory specification
interactive proof
context (extra/logical) inspection
proof tool development
UI Subsystem Ideas

Inspection: use standard web browser?!



Theory specification


enhanced editor similar to ProofGeneral?!
Interactive proof


attractive: XML/XSLT, MathML, hyperlinks
requires updating of XML documents
proof by pointing component?!
Proof tool development

IDE?
Paradigm Change


Goodbye monolithic proof assistant
Welcome platform


prover provides a logical deduction service
Support concurrency?




concurrent access theorem databases?
dependency: theory modifications?
security?
fault-tolerance: orphaned processes, …
Allocation of Responsibility
between UI and Prover



Clear for most tasks
Basic validation of user inputs in UI
Parsing of user commands?


Output formatting?


generate RPCs? XML encoding?
XML/XSLT transformation in UI?
What does the UI need to know?


Proof assistant state replication?
Simplicity versus performance gain
Component Frameworks?

Do we need facilities offered by
frameworks such as .NET or CORBA?




registries and dynamic binding?
transaction support?
persistence support?
Suggestion: keep it simple


Java UI: encapsulate processes
Loose coupling: (XML) messaging
XML Protocol Thoughts






Message vocabulary and sequencing
Semantic rather than presentation oriented
Support for coarse-grained concurrency
 process a theory
If possible, orthogonal to standards like MathML
Extensible
Common core independent of proof assistant and
of user interfaces!
Components and Adaptability




Components only work with welldocumented interfaces!
Integration of complex components will
always require custom adaptation
Simpler components such as XSLT
input/output filters could be pluggable
User interface should be extensively
adaptable using configuration files

Example: Mozilla XUL
Conclusions





Encourage generic UIs
User oriented requirements elicitation
Scope for HCI improvement
 least effort, hyperlinks, drag-and-drop,
proof by pointing, text interaction
Separate UI raises architectural issues
 platform architecture, components, web
browsers, concurrency, XML protocols
Proof assistants need effective UIs
Download