Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Just for fun: From Coq to a paraconsistent poof assistant

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Just for fun: From Coq to a paraconsistent poof assistant


Chronological Thread 
  • From: Talia Ringer <tringer AT cs.washington.edu>
  • To: Coq-Club <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] Just for fun: From Coq to a paraconsistent poof assistant
  • Date: Thu, 28 Mar 2019 21:22:52 -0700
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=tringer AT cs.washington.edu; spf=None smtp.mailfrom=tringer AT cs.washington.edu; spf=None smtp.helo=postmaster AT mail-wr1-f51.google.com
  • Ironport-phdr: 9a23:do1GTBTuC4H02GsTqwlMrnB8/dpsv+yvbD5Q0YIujvd0So/mwa69ZxyN2/xhgRfzUJnB7Loc0qyK6vimCTFLv83JmUtBWaQEbwUCh8QSkl5oK+++Imq/EsTXaTcnFt9JTl5v8iLzG0FUHMHjew+a+SXqvnYdFRrlKAV6OPn+FJLMgMSrzeCy/IDYbxlViDanbr5+MQm6oR/Su8QWjodvK6g8wQbVr3VVfOhb2XlmLk+JkRbm4cew8p9j8yBOtP8k6sVNT6b0cbkmQLJBFDgpPHw768PttRnYUAuA/WAcXXkMkhpJGAfK8hf3VYrsvyTgt+p93C6aPdDqTb0xRD+v4btnRAPuhSwaMTMy7WPZhdFqjK9Drx2hqR5wzY7abo+WKfRwYL/ScMgASmZdRMtcTTBNDp++YoYJEuEPPfxYr474p1YWsxWxHw2sBOL1xTRVmnH23Ks60+s/HgHcwQctGM4OsG7VrNXzO6cdT/q1wbLUwjXYdf9X1y3y6JPIchAgp/GMUq5wcc3XyUU1CQzKk0iQpJXjMjiI1eoNq3CW4/R8We+rkWIqqAF8riKxyssyl4XFnIIYxk3C+C5k2og6P8e4R1R+YdO8EJtfqSWaN4xuT8MnWW5ouSI6xqQIuJ6hYSQG0Zonyh7CZ/CdfIiI5RXjVOmVIThmnn5qZLW/hxOq/UihzO3zSNW03U5UoiZZltTArHMA2hzJ5sSZVPdx412t1DaS2wzL7+FLO0E0la7VK547xb4wk4IesVjZHi/3nkX2g7GZdl8/9+e08OTreLvnqYWHN490iwH+NKsumtC4AeQ+KAQBQXWU+fmk2L354UL5WKlKjuExkqTBrJ/aIt0bqrelDA9Rz4Ys8A2yDyym0dQdhXkINkhJeBOBj4jzOlHBOur0DfmlgwfkrDA+7Pffe5blH5+FenPEifLqeat3w09a0gs6i95FscF6ELYEdc76Xk74/ObZCBA0KUTg3/zmDtpwzKsVQiSQC7SZMaXdrViOoO8jPr/fN8cupD/hJq19tLbVhngjlApFJPj77d4scHm9W89eDQCcaHvojM0GFD5b7AElCvPjk12DVzFPYHD0Uq4htGliVNCWSLzbT4Xou4SvmT+hF8QHNGtdTE+FCnfpcYqYXPFKZS6PcJc4z240EIO5Qopk7imA8Q/3z709c7jR8ywc8I35jZ17urSVmhY1+jh5Sc+a1jPVQg==

I don't know. I was hoping coq-club would know, or at least be able to muse. The musing part is happening, so that's good :)

I can define the term you've given me in Type, but not in Prop. I have to wonder if this is really a problem, though; you may get that Fin 0 -> False, but without eliminating False, there's no way to get that False -> Fin 0, and so there's no way to get False -> P. What you get is that some encoding of false via some other uninhabitable type -> P, but in this logic, that encoding does not imply False. It does sort of fundamentally change what False actually means though; not all uninhabitable types would imply each other anymore. There would, in that model, be uninhabitable types with constructors that explode, but uninhabitable empty types would not explode. Would this be meaningful?

If this wouldn't be meaningful, then what is the minimum set of restrictions one would need to make to prevent something like Jason's term (which I'm calling fin0_ind)?

On Thu, Mar 28, 2019 at 9:21 PM Jason Gross <jasongross9 AT gmail.com> wrote:
Is there an existing theory that combines paraconsistent logic with dependent types?  You can do a lot with just the Church encoding of inductives, and all you need for that is Pi.

On Thu, Mar 28, 2019, 23:52 Talia Ringer <tringer AT cs.washington.edu> wrote:
Interesting! I can't say I had a plan; I thought of this while going for a run 30 minutes ago. I wonder if there's a restriction that it is possible to place either on inductive types or on pattern matching that makes this possible, but still leaves a useful and interesting set of inductive types and their eliminators. 



On Thu, Mar 28, 2019 at 8:49 PM Jason Gross <jasongross9 AT gmail.com> wrote:
What are your plans for the Church encoding of False := forall A : Prop, A?

I think you can also get False_ind by defining Fin : nat -> Set and then doing a match on an element of Fin 0:
(fun A x => match x in Fin n return match n with O => A | _ => True end with <each ctor> => I end) : forall A, Fin 0 -> A

On Thu, Mar 28, 2019, 23:38 Talia Ringer <tringer AT cs.washington.edu> wrote:
I anticipate being bored next week, and I'd like a quick, fun, and interesting side project to fill my time (and I'm familiar enough with the Coq internals that playing with the code can meet these criteria). I think, if so tasked, I could write a paraconsistent proof assistant from scratch. But what if I wanted to fork Coq and trim it down to a paraconsistent proof assistant? What is the minimal set of changes I would need to make?

Clearly, I would need for the principle of explosion to no longer hold, which means that False_ind and similar terms should no longer type-check. This means that empty pattern matching ought to be impossible, since in Coq:

False_ind :=
  fun (P : Prop) (f : False) => match f return P with end
: forall (P : Prop), False -> P.

It looks like in so doing, I would make disjunctive syllogism (forall A B, or A B -> ~ A -> B) impossible to prove, since I think all proofs of this in Coq must go through a term like False_ind. Am I wrong?

If this makes disjunctive syllogism unprovable, then I would not need to remove or_introl or or_intror. Does this mean that I could keep inductive types? Or would they cause unforeseen problems?

What about other features that Coq has?

Best,

Talia





Archive powered by MHonArc 2.6.18.

Top of Page