-
Notifications
You must be signed in to change notification settings - Fork 2
Enhancement Proposals
Olivier Laurent edited this page May 19, 2021
·
27 revisions
-
Goal: provide short names for compound formulas, and rely on the same mechanism to manipulate infinite formulas described through recursive equations
πΉ ::= (A β A) βΈ (A β A) β ::= !(A βΈ A) βΈ !(A βΈ A) o ::= !o βΈ o -
Interface:
- provide a list of fields to input expressions of the shape
name ::= formula -
namecan be "defined" only once - clicking on an atom
name(or dualnameβ₯) which is a defined name unfolds the definition once (or its dual) - possibilities for unfold rule display:
- implicit: in place unfold as for implicit exchange
- explicit: this unfold rule might be displayed differently from others with dashed line for example
- provide a list of fields to input expressions of the shape
-
Code:
- register an association table
(name, formula)according to input definitions by the user - add unfold rule with premise β’ Ξ, A, Ξ and conclusion β’ Ξ, X, Ξ, and with premise β’ Ξ, Aβ₯, Ξ and conclusion β’ Ξ, Xβ₯, Ξ if
(X, A)is a registered definition - unfold has priority over axiom: clicking on X in β’ X, Xβ₯ unfolds X if X is defined rather than applying an axiom rule (axiom rule is reachable through clicking on the turnstile)
-
Coqexport- non-recursive definitions using
Notation: allows implicit use of definitions, entails some automatic folding - non-recursive definitions using
Definition: explicitunfoldmatches use of unfold rule - recursive definitions: to be investigated, maybe using a co-inductive definition of formulas
- non-recursive definitions using
- register an association table
-
Possible Extensions:
- automatic folding a formula A into X if a definition
X ::= Ais detected- what if two definitions
X ::= AandY ::= A? - if we have both
β ::= !(A βΈ A) βΈ !(A βΈ A)andπ ::= !(A βΈ A) βΈ !(A βΈ A) βΈ !(A βΈ A), do we want unfolding ofπto give!(A βΈ A) βΈ β?
- what if two definitions
- automatic folding a formula A into X if a definition
- Discussion: issue #12
- Goal: integrate cut rule in proof construction
-
Interface:
- activate cut rule through option
- in cut mode, sequents are displayed as
β’ . E , F , G , H .where both,and.are clickable - click on active
,or.opens a pop-up asking for a cut formulaA - the cut rule is applied in the following shape with context split at clicking point
β’ . Ξ , A . β’ . A^ , Ξ . βββββββββββββββββββββββββββββ β’ . Ξ , Ξ .
-
Code:
- add a constructor to
proof:Cut_proof of formula list * formula * formula list * proof * proof -
Coqexport- define two installation modes for
NanoYalla - one binding to
Yallaand providing a certified proof of cut admissibility - one which is autonomous but introduces cut admissibility as an axiom
- define two installation modes for
- add a constructor to
- Discussion: issue #11
- Goal: display explicit exchange rules in the interface
- Code: provided as an option
-
Interface:
- drag and drop is restricted to hypotheses of proofs (if applied inside a proof, reset proof to this point)
- a drag and drop operation on a sequent which is not premise of an explicit exchange rule generates an exchange rule
- a drag and drop operation on a sequent which is premise of an explicit exchange rule does not generate a new rule and updates the permutation
-
Options / Choices:
- mention the permutation in the rule name
- use explicit exchange rules of the shape
β’ Ξ, A, Ξ, Ξ£<->β’ Ξ, Ξ, A, Ξ£(thus matching each drag and drop operation) - add colors to follow occurrences
- Goal: dealing with infinite proofs through back edges connecting a proof leaf to an identical sequent met previously during proof construction
- Interface: drag and drop a turnstile symbol to another sequent which is equal (not up to permutation since permutation is meaningful) and lower in the proof (this has to be checked)