23 votes
Accepted

How hard would it be to state P vs. NP in a proof assistant?

I'm going to disagree with DW. I think that it is possible (although difficult) for a P vs. NP result to be stated in a proof assistant, and moreover, I wouldn't trust any supposed proofs unless they ...
user avatar
  • 29.1k
12 votes
Accepted

Is Coq synthetic or analytic?

The remark is about one specific usage of Coq, namely formalization of programming language theory. Let us first make clear the distinction between synthetic and analytic: In a synthetic approach to ...
user avatar
11 votes

Has Anyone Actually Created a System that Writes Computer Programs from specification?

This is a very active research topic, very promising, though full automation of program generation probably has intrinsic limitations (but are human beings any better?). But the idea is still be very ...
user avatar
  • 19.1k
10 votes
Accepted

Can a type system serve as a proof assistant for foreign functions?

Long story short: no you can't. A foreign function is like a black box and the type you ascribe to it is a promise you make: in the Curry-Howard correspondence that would correspond to adding an axiom ...
user avatar
  • 563
10 votes

Why are dependently typed languages such as Agda used for proofs, if supercompilers for simpler typed languages can do the same?

I think you're confusing two things: dependently typed languages are convenient for specifying properties and giving proofs about functional programs. The techniques you mention are possible decision ...
user avatar
  • 7,734
10 votes

How hard would it be to state P vs. NP in a proof assistant?

Using proof assistants for this purpose is certainly possible in principle, but I suspect it would take more effort than most folks who write such proofs would be interested in putting in. It would ...
user avatar
  • 140k
9 votes
Accepted

Given the "programs as proofs" isomorphism, how do we know that the program isn't lying?

Proving the correctness of a program in a form of a proof that's nothing but the program itself This is not quite how the Curry-Howard-Correspondence works. First one has to show that the language ...
user avatar
  • 404
9 votes

Has Anyone Actually Created a System that Writes Computer Programs from specification?

The wag answer: Yes, but at the time of writing, for most nontrivial programs the specifications seem to be just as hard to write and debug as the programs would be. More seriously, babou's answer is ...
user avatar
  • 18.8k
9 votes

How hard would it be to state P vs. NP in a proof assistant?

I can give a direct answer to (2): $P\ne NP$ has been stated in Lean (along with the other main results of Cook's paper, where the conjecture was first described), as part of the Formal Abstracts ...
user avatar
8 votes

Is Goedel's 1st theorem not algorithmically derivable?

Your reasoning is incorrect. It is true that your hypothetical "proof deriver" cannot derive all true statements. No proof derivation system can, and indeed, it is not even possible to express the ...
user avatar
  • 7,734
8 votes

Can we prove that $1 + 2 + \dots + n = \frac{n(n+1)}{2}$ using a computer program?

In order with the explicit questions: Yes Yes No To answer the question I think you're attempting to ask, we can prove many things using type checking, but not everything. What does this have to do ...
user avatar
8 votes
Accepted

What makes a proof assistant a proof assistant?

I would expect a proof assistant to provide: a syntax to express some mathematical statements a syntax to express a proof of one of those statements a computational process to "check" that a proof of ...
user avatar
  • 499
8 votes

How to get an element from an existential proposition in Type theory proof assistant (Lean prover)

The existential form of the axioms of set theory is convenient for the meta-theoretic explorations of set theory, such as forcing etc., where it is important to have a minimal language to worry about (...
user avatar
7 votes
Accepted

How to Efficiently Define the Natural Numbers in Type Theory

There's nothing stopping you from defining binary numbers in type theory, and this should give greater efficiency in practice. For example: https://coq.inria.fr/library/Coq.Numbers.BinNums.html ...
user avatar
  • 29.1k
7 votes

Why cannot match $ Bool \equiv Bool $ with $ refl $ while $1 \equiv 1$ can?

From the perspective of Homotopy Type Theory (HoTT), i.e. if we have the Univalence Axiom, there are definitely values of Bool ≡ Bool that are distinct from ...
user avatar
6 votes

Can we prove mathematical induction statements in Lisp?

Let me try to clarify a point that seems to be confusing you: you seem to be conflating 2 related, but different concepts. The first is the concept of a proof system, which allows you to specify and ...
user avatar
  • 7,734
6 votes
Accepted

How come identity encodes absurdity

looks entirely identity function to me, which can definitely be inhabited by a closed term A proof of $\forall C : Prop, C$ is a function from an arbitrary proposition to its proof. Since a ...
user avatar
6 votes
Accepted

Agda: Which part does this type introduce universe inconsistency?

The term you're applying ¬_ to is large: it quantifies over all M : Set and therefore has type ...
user avatar
  • 563
6 votes
Accepted

Building non-classical logics in Agda & Coq

You can define many non-classical logics in Coq (and I assume Agda too), even if they are incompatible with the logic of your proof assistant, but you need to define the concept of inference yourself. ...
user avatar
5 votes

Given the "programs as proofs" isomorphism, how do we know that the program isn't lying?

In some sense it doesn't matter what the function does, as long as it takes the correct types and produces something of the correct type. The trick is that when you start talking about the Curry-...
user avatar
5 votes
Accepted

What is a quotient structure?

The idea is that two expressions which are α-equivalent are not meaningfully different. λx.λy.x and λz.λy.z are technically different expressions. They are α-equivalent, though, they intuitively ...
user avatar
  • 166
5 votes

What is a quotient structure?

It's a term coming from abstract algebra. When you quotient a set $S$ with respect to some equivalence relation $\sim$, you are replacing the set $S$ with its equivalence classes under $\sim$. Often ...
user avatar
5 votes
Accepted

Explanation of proof of why connectedness is not conjunctively local of any order $k$

The predicate $\varphi_0$ depends on at most $k$ points. There are $k+1$ middle squares. So $\varphi_0$ cannot depend on all of them. That is, there is a middle square that $\varphi_0$ does not depend ...
user avatar
5 votes
Accepted

Is there a fundamental reason/limitation, such as $P \not = NP$, that prevents computers from being able to do mathematics (proofs, etc.)?

The fundamental restriction is human computer programmers' inability so far to create computers equipped with real intelligence. "Never" is a very long time, so it's hard to accept that something will ...
user avatar
  • 24.9k
5 votes

How would one prove the pigeonhole principle with a SAT solver?

SAT solvers work in the propositional calculus, and usually accept as input a formula in conjunctive normal form. There are several different propositional variants of the pigeonhole principle; they ...
user avatar
5 votes

Tool for generating all the consequences of the logical theory (general logic programming framework)?

You understand incorrectly. That is not how logic programming works. The number of consequences typically grows exponentially, or is even infinite. For instance, some consequences of $\forall x \in \...
user avatar
5 votes
Accepted

Find the loop invariant of the given while loop

At the end of each iteration you have $$ \forall j: 0 \leq j < i \implies b[j] = a[j+1] $$ which you can prove by induction. Thus, when the algorithm terminates, $i$ has reached $n-1$ and you have ...
user avatar
5 votes
Accepted

Explanation of implication-introduction rule

Every assumption that is introduced between brackets has to be discharged at some point for the proof to be complete. Otherwise, we could prove that $A$ is true for any given $A$ as follows. ...
user avatar
5 votes
Accepted

What does `Dv` mean in $F\star$ language?

In the theory of computation "diverge" means "does not terminate" or "runs forever". This is a computational effect (of a peculiar kind).
user avatar
5 votes

What makes a proof assistant a proof assistant?

I would think a proof assistant is something which can represent proofs and validate the reasoning is correct. The underlying logic/type theory just determines which reasoning can be represented and ...
user avatar
  • 51

Only top scored, non community-wiki answers of a minimum length are eligible