Skip to content

怀疑C++不能用于自动化定理证明 #1

Description

@NanaGlutamate

由于C++并不会检查requires是否在任何条件下都满足,而只会检查对于某个特定的实例化是否满足,C++可能并不能用来做自动定理证明。
例如,甚至可以证明任何自然数都是0:

template <Nat::isNat N>
struct EveryNumberIsZero : Prop {
    constexpr Eq<N, Nat::Zero>
        operator() () {
        using namespace Nat;
        using namespace Prover;

        return rfl<Nat::Zero>();
    }
};

int main() {
    auto proof = EveryNumberIsZero<Zero>()();
    return 0;
}

表面上看,EveryNumberIsZero确实能对任何一个自然数实例化一个Eq<N, Nat::Zero>

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions