Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] I don't believe Coinduction; Please help me grok it :)

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] I don't believe Coinduction; Please help me grok it :)


Chronological Thread 
  • From: Jason -Zhong Sheng- Hu <fdhzs2010 AT hotmail.com>
  • To: Coq-Club Club <coq-club AT inria.fr>
  • Subject: Re: [Coq-Club] I don't believe Coinduction; Please help me grok it :)
  • Date: Fri, 11 May 2018 17:37:36 +0000
  • Accept-language: en-CA, en-US
  • Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=fdhzs2010 AT hotmail.com; spf=Pass smtp.mailfrom=fdhzs2010 AT hotmail.com; spf=Pass smtp.helo=postmaster AT NAM01-BY2-obe.outbound.protection.outlook.com
  • Ironport-phdr: 9a23:I7x4MhHPOs9EPDoZuVHdop1GYnF86YWxBRYc798ds5kLTJ7ypMuwAkXT6L1XgUPTWs2DsrQY07GQ6/iocFdDyK7JiGoFfp1IWk1NouQttCtkPvS4D1bmJuXhdS0wEZcKflZk+3amLRodQ56mNBXdrXKo8DEdBAj0OxZrKeTpAI7SiNm82/yv95HJbAhEmDSwbaluIBmqsA7cqtQYjYx+J6gr1xDHuGFIe+NYxWNpIVKcgRPx7dqu8ZBg7ipdpesv+9ZPXqvmcas4S6dYDCk9PGAu+MLrrxjDQhCR6XYaT24bjwBHAwnB7BH9Q5fxri73vfdz1SWGIcH7S60/VC+85Kl3VhDnlCYHNyY48G7JjMxwkLlbqw+lqxBm3oLYfJ2ZOP94c6jAf90VWHBBU95RWSJfH428c4UBAekPPelas4byqEADogGiCQWwHu7j1iNEi33w0KYn0+ohCwbG3Ak4EtwKqnvUt9L1NKEPWuysz6bIzTLDb/VZ2Tzg9YbIcg4uofeDXb5pbMHfy1QvHB7Cg1WetIPlPzKU1v8Tv2SH8uZsSfmii24gqwFtpzig3MYsio3Tio0JzVDE8Dx0zYAoLtO2T057ZMSrEJpWtyyCK4R2RdkiQ2d2tyY+zr0Ko4C0czUXyJg/2xHQcfmHfJOS4hLiSemRLil3iGhieLKliBa/91WrxO7kVsSs31tGsjBJn93SunwXyhDf8MuKR/Vl8kevxzmC1Bzf5+RBLE0wlKfWL5sszaIsmZcXqkvOGyH2lUbygaOKc0gp/vSn5ufob7jgu5SSLZV7ihvkPaQrgsG/Afo3MgwJX2WD4eqxyLrt8VHkTLlTk/A5kLfVvIndJcsAuKG1GQhV0ps/6xmkCDemzdIYkmQdIFJdYhKHiJTpNE/SL/DkDPe/hFKsnC1sx/DbIr3hBpLNLn/AkLv7Ybl97EtcxBIyzdBZ+Z1UFqkMLf3vVkPrsNHUEAU1PxGuz+vkBthxzoYeVniOAq+dPqPSq1iI5uc3LumCeYAVuDf8K+M76/LykHM1hUQQfamu3ZsLbXC3BPVmI0GDbXXwhdcBFH8GvhAiQ+zylF2CTTlTam6uUKI7/zE3EZ6pDYPeRo+2m7GBxye6HphOZm9cEFyMEHHod5+FW/gWci6SLNVhwXQ4Uu2KTJZk/hWzvkfRz6dtZr7f/TRdvpb+3vB04ffSnFc872onId6a1jSvRnpzmCtNdT8x2q83mkxwzFjGmYhly6hWGdxB/KkRC18SNZnAyuV7D5b5XQeXLYTBc0qvXtjzWWJ5ddk22dJbJh8lQ4zz3CCG5DKjBvour5LOAZU19qzG2H2ofJR9zGrD3aglyVIhR5kWbDH0tutE7wHWQrXxvQCBja/zLvYc2zLI/WaHi2GJuRMACVMiYeD+RXkaI3Dug5H560fFE+D8L50CalIE4//Yb6xAZ5vukElMQ+rlNJLGeWWtlmysBBGOgLSRcI7tfGZb1yLYWhEJ

Hi Siddharth,


Long story short, there is a very suitable paper for this question: https://www.cs.cornell.edu/~kozen/Papers/Structural.pdf

www.cs.cornell.edu
http://journals.cambridge.org Downloaded: 10 Feb 2016 IP address: 104.229.211.75 Practical coinduction 3 Although there is a coinductive step but no basis, any difficulty that would arise that

I personally find the two proofs on page 5 and 6 clearly illustrates the dual positions between induction and co-induction.


It's not rarely to see in lots of papers that "accuse" co-inductive proof of being "uncommon' or "not standard", while co-induction is actually as strong as induction, but proves things that cannot be reasoned by induction, and they come hand in hand. It's a common phenomenon that people are much more familiar with one thing, but not its dual.


I would prefer to think induction as a proof of "property P must hold", while co-induction as a proof of "property P cannot fail". In induction, we pretty much discuss two things: we show that P holds for all base cases, and then all other cases will eventually be reduced to those base cases, which requires the structure we look at must be finite.


In co-induction, however, for every case we look at, either the information is sufficient to conclude P, or we must look at the tail. Here is the kick: in proper co-induction, we must have some constructor appear in the head position, which allows the cases to be covered by the previous proof that we begin with.


Another way to look at them is, induction is a "sum" type of proof, which is divided by cases; while co-induction is a "product" type of proof, which is divided by fields from the same constructor.


Sincerely Yours,

Jason Hu

From: coq-club-request AT inria.fr <coq-club-request AT inria.fr> on behalf of Siddharth Bhat <siddu.druid AT gmail.com>
Sent: May 11, 2018 1:13:54 PM
To: Coq-Club Club
Subject: [Coq-Club] I don't believe Coinduction; Please help me grok it :)
 
This title is click-baity, but I believe it captures my feelings adequately.

I am able to "believe" induction on, say, the naturals, since they have a well-founded order. Hence, one can intuit what it means to "perform induction" on these kinds of objects.

On the other hand, how does a Coinduction proof "start"? Or, well, how does one intuit cofix ? I'm now able to perform the proofs in Coq, but I really don't feel like I understand them.

The rough argument that I have in my head to justify Coinduction is as follows:

1. A Coinductive proof technique is used to prove a proposition P on functions that lazily produce infinite amounts of data.
2. We can only observe a finite amount of this infinite data
3. Hence, to prove a Coinductive proposition, we can assume our proposition P holds on the "infinite tail that is unobserved", and we show that adding some new finite data does not break the invariant P.
4. So, when someone "observes" this infinite data to some length, we can assume that the proposition P holds for the "part that remains unobserved", and "work our way backwards" to add all the finite pieces that were observed, while making sure P holds.

How do the experts think about Coinduction? Is my intuition at all correct? I'd love help and feedback on this!

Thanks,
~Siddharth


--
Sending this from my phone, please excuse any typos!



Archive powered by MHonArc 2.6.18.

Top of Page