-
Notifications
You must be signed in to change notification settings - Fork 2
Enhancement Proposals
Olivier Laurent edited this page Apr 28, 2021
·
27 revisions
- Goal: provide export of proofs matching what the user sees on the screen
-
Code:
- extend
Exchange_proofwith typesequent * int list * int list * proof(let us call σ1 the first permutation and σ2 the second one) - if ⊢ Γ is the conclusion of the premise, ⊢ Γσ1 is what is on the screen (generated by a posteriori drag and drop by user) and ⊢ Γσ2 is the conclusion of the proof
- when a rule is generated, σ1 is the identity
- when the user modifies the order in an existing sequent, σ2 is unchanged and σ1 is updated
- for
Coqexport, only σ2 matters, the conclusion of the proof is ⊢ Γσ2, as well as for exports with explicit exchange rules - for export with implicit exchange rule, the displayed conclusion of the proof is ⊢ Γσ1
- extend
- Goal: provide short names for compound formulas, and rely on the same mechanism to manipulate infinite formulas described through recursive equations
-
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)
- 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)
- 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
- 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)