epfl-lara / lisa

Proof assistant based on first-order logic and set theory
Apache License 2.0
33 stars 18 forks source link

Simple deduced steps #71

Closed sankalpgambhir closed 1 year ago

sankalpgambhir commented 2 years ago

Adding several deduced steps and simplifications to make proofs easier one by one.

Current additions:

Structural steps:

They may be used in proofs, for example, as (sequents omitted for readability and replaced with ...):

THEOREM("example") of "..." NPROOF {
        val s0 = andThen(...)                by Weakening
        have(...)                            by Trivial
        val s1 = andThen(...)                by InstantiateForall(z)
        have(...)                            by Cut(s0, s1)
        val s2 = andThen(...)                by Weakening
        have(...)                            by LeftAnd(s2)
        andThen(...)                         by LeftNot()
        andThen(...)                         by LeftForall(z)
        andThen(...)                         by RightImplies
        andThen(...)                         by RightNot
}

As in the example, if an argument list is not required, the usages by LeftNot and by LeftNot() are equivalent.