Skip to content
Snippets Groups Projects
  1. Oct 24, 2022
    • SimonGuilloud's avatar
      New tactic system (#73) · 8d13de42
      SimonGuilloud authored
      New tactic system
      Proofs can now be written using dedicated tactics and deduced steps. Tactics can be developped as object from which a SCProof can be recomputed.
      Management of premises and target bottom sequent is unified, but tactics can optionally take other arguments.
      Tactics can be used to construct proof using a dedicated syntax and DSL. Formally, The proof is built imperatively.
      This means it is possible to write code in the middle of the proof (for example to print it) and it is possible to assign proof steps.
      The library keep track of the proof being written from start to finish. A proof may look like:
      ```
      THEOREM("fixedPointDoubleApplication") of "∀'x. 'P('x) ⇒ 'P('f('x)) ⊢ 'P('x) ⇒ 'P('f('f('x)))" PROOF {
              assume(forall(x, P(x) ==> P(f(x))))
              val base = have( (P(x) ==> P(f(x)), P(f(x)) ==> P(f(f(x)))) |- P(x) ==> P(f(f(x))))           by   Trivial
              have(() |- P(x) ==> P(f(f(x))))             by   SUBPROOF {
                have(P(f(x)) ==> P(f(f(x))) |- P(x) ==> P(f(f(x))) )                by   LeftForall(x)(base)
                andThen(() |- P(x) ==> P(f(f(x))))              by   LeftForall(f(x))
              }
            }
      ```
      Sequent Calculus proof steps have been adapted so that they need only the minimum (often zero) explicit parameters, whcih are automatically infered.
      Subproofs can also be used, and there is no need to do import management. Imports of Justifications and of proof steps of enclosing proofs are
      automatically passed through the imports.
      User should not use integers anymore to refer to premises, but instead provide a previous proof step or a justification directly.
      On top of basic sequent calculus steps, the naive propositional solver and a tactic to instantiate forall quantifiers.
      Existing proof have been translated to old sequent calculus (with every step lead by SC.) to make room for the new tactics identifiers.
      8d13de42
  2. Oct 16, 2022
  3. Oct 12, 2022
  4. Oct 11, 2022
  5. Oct 06, 2022
  6. Oct 05, 2022
  7. Oct 04, 2022
    • SimonGuilloud's avatar
      Front integration and various changes (#55) · 46e4cbd1
      SimonGuilloud authored
      
      * Integration mostly but roughly finished. Code compiles and is adapted to the change of variables representation in the kernel, except for two parts:
      Unification is not fully working. It is used in many "tactics" deduction rules, expect some of those to not always work.
      Fornt Macro: Compile-time string interpolation, with quote and so on. Probably easier to correct, but the syntax of that code is very difficult to understand. Dor now, this functionality is disabled (commented).
      
      * simplifying, completting and consitentifying representations of schematic nodes in the Kernel. For now, Kernel compiles.
      
      * More consistency and completeness changes. Code compile and tests outside the front do pass. Some tests related to unification and rules application in the front don't.
      
      * Scaladoc up to date for the whole kernel.
      
      * Removed the singleton set symbol from the definition of set theory. It should be an easily derived symbol. Added the missing subset axiom to set theory. Improved documentation for RunningTheory and Set Theory.
      
      * Added a new deduction step: Rewrite True. it subsumes Hypothesis and is equivalent to rewriting a sequent that is OCBSL-true. Added top and bot constant predicate labels. Some more documentation.
      
      * Rework of the user manual. Contains about everything Kernel-related. Does not contain documentation about the front, nor about the example development.
      
      * Commented a test that can't pass until the unifier is repaired.
      
      * remove leftover tentative code in Mapping.scala
      
      * Make unification tests more readable:
      * improve error messages when a test fails
      * name emptyContext and emptyResult instead of using UnificationContext()
      * split the expected unification result into a separate clause
        in the method to distinguish visually checkDoesNotUnify(a, b, partial)
        and checkUnifiesAs(a, b, expected)
      
      * Split unification tests into multiple test cases
      
      * @Ignore front's proof tests (instead of commenting out)
      
      * Improve error messaging in front ProofTests
      
      In particular, supply clues when assertions fail and split the tests into
      test cases to clearly see which tests pass and which fail.
      
      * Ignore unification tests until unification works with the new version of Lisa
      
      * Run scalafix
      
      * Further split unification tests: 1 test corresponds to 1 check
      
      * Merge conflicts in the manual
      
      * scalafix.
      
      * scalafix 2.
      
      * scalafix 3.
      
      * trying to sastisfy the CI 5.
      
      * Trying to satisfy the CI, 6.
      
      * Trying to satisfy the CI, 7.
      
      * Trying to satisfy the CI, 8.
      
      * Front integration (#52)
      
      * Large update to the user manual
      * Merge development in Peano Arithmetic
      
      * scalafix.
      
      * Front integration (#53)
      
      Reintroduce all of the front. 
      Make the parser and printer working with the change on FOL..
      Compatibility with the Peano Arithmetic development.
      Update to the Manual.
      
      Co-authored-by: default avatarKatja Goltsova <katja.goltsova@protonmail.com>
      46e4cbd1
  8. Oct 03, 2022
  9. Sep 29, 2022
  10. Sep 26, 2022
  11. Sep 25, 2022
Loading