coq-club AT inria.fr
Subject: The Coq mailing list
List archive
- From: Gert Smolka <smolka AT ps.uni-saarland.de>
- To: "coq-club AT inria.fr Club" <coq-club AT inria.fr>
- Subject: Re: [Coq-Club] Equations 1.2beta is out!
- Date: Wed, 6 Feb 2019 13:29:04 +0100
- Authentication-results: mail2-smtp-roc.national.inria.fr; spf=None smtp.pra=smolka AT ps.uni-saarland.de; spf=Pass smtp.mailfrom=smolka AT ps.uni-saarland.de; spf=None smtp.helo=postmaster AT theia.rz.uni-saarland.de
- Ironport-phdr: 9a23:UyjxnRwJ0d/LLE7XCy+O+j09IxM/srCxBDY+r6Qd1O0WIJqq85mqBkHD//Il1AaPAd2Lraocw8Pt8InYEVQa5piAtH1QOLdtbDQizfssogo7HcSeAlf6JvO5JwYzHcBFSUM3tyrjaRsdF8nxfUDdrWOv5jAOBBr/KRB1JuPoEYLOksi7ze+/94HQbglSmDaxfa55IQmrownWqsQYm5ZpJLwryhvOrHtIeuBWyn1tKFmOgRvy5dq+8YB6/ShItP0v68BPUaPhf6QlVrNYFygpM3o05MLwqxbOSxaE62YGXWUXlhpIBBXF7A3/U5zsvCb2qvZx1S+HNsDwULs6Wymt771zRRHolCgJODE2/nzZhMx+kqxUohGvqRtkzo7IeYGVMeZyfqPBcd8EQ2dKQ8ZfVzZGAoO5d4YBDvQOPfxEr4LgulUOqBy+BQ2vBOz11zRFgWT23ag90+QlEgHJxhctH8oVsHjOsdX1MqYSXfmuzKbS1zrDdfdW1i376IfVaBwuvO+DUKt2fMHMykcvDxvIgkiepIHqJT+Y0uUAv3KZ4uZ6W++jlnYrpgV/rzS128shjorEipgLxl3E6Sl12ps5KNO7RUN9fNWqCoFftzuAOItzWs4iQ39nuCI9yrAepZ67fDYFyJU9yBLFcfyGcpKE4g/lVOaQODt4n2hqd6ilhxa260egzPDzWtOp31lUtiZFk9/MuW4R1xHL98SKRPRw8l2l1DuOzQze6PtILE4pmabDLp4u2L8wlp4dsUTZGS/2nV37jLSTdkUj/uio6P7ob67+pp+HLYN0lwf+MqU3lsykG+s3KBIOX2yB9uS6ybLv51D2T6tSgv0sjqbZqIzaJdgcpqOhHwBV1Z8j5w+jADeizdQXhmIKLElFeRKCl4jmIUvCIPH+DfelglSjii1nx/7cPu6pPpKYZHPEifLqeat3w09a0gs6i95Fr7lQF7tLaKb4XVa0v9jFBDc4NRa1yqDpEoMu+JkZXDegD7WFeJjXtluL76p7OOyLYIwckC7mbeUj5rv1hHYjnVYbce+l0M1EOziDAv16LhDBMjLXidAbHDJS51tsfKnRkFSHFAVrSTO3VqM46Cs8Ddj+X5/YAJ2rgfma1S6hGpRQaiZKBwLVSCu6R8C/Q/4JLRmqDIp5iDVeDeq5UMk80xDrrwbz0b5uKOaS9iBK7cu+hugw3PXakFQJzRIxD8mZ1DvTHX10k2IBASUkmr15oAlmw16Z1aF+j7pUGI4L6g==
I like Equations and Lia. As an example (from Programming 1),
I defined div and mod with subtraction and proved
x = S y * div x (S y) + mod x (S y) with complete induction, see below.
My question: Can we do better, in particular, for students starting with Coq?
Gert
From Coq Require Import Arith Lia.
From Equations Require Import Equations.
Equations? Div (x y : nat) : nat by wf x lt :=
{ Div x 0 := 0 ;
Div x y with le_lt_dec y x :=
{ | left _ := 1 + Div (x - y) y ;
| right _ := 0 } } .
Proof.
lia.
Qed.
Equations? Mod (x y : nat) : nat by wf x lt :=
{ Mod x 0 := 0 ;
Mod x y with le_lt_dec y x :=
{ | left _ := Mod (x - y) y ;
| right _ := x } } .
Proof.
lia.
Qed.
Fact Div_Mod x y :
x = S y * Div x (S y) + Mod x (S y).
Proof.
induction x as [x IH] using lt_wf_ind.
simp Div Mod.
Opaque mult.
destruct (le_lt_dec _ _) as [H|H]; cbn.
- assert (x - S y < x) as IH1%IH by lia.
lia.
- lia.
Qed.
- Re: [Coq-Club] Equations 1.2beta is out!, Gert Smolka, 02/06/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Laurent Thery, 02/06/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Laurent Thery, 02/06/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Pierre Courtieu, 02/06/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Jason -Zhong Sheng- Hu, 02/06/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Matthieu Sozeau, 02/07/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Pierre Courtieu, 02/11/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Matthieu Sozeau, 02/11/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Pierre Courtieu, 02/11/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Matthieu Sozeau, 02/07/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Jason -Zhong Sheng- Hu, 02/06/2019
- Re: [Coq-Club] Equations 1.2beta is out!, Pierre Courtieu, 02/06/2019
Archive powered by MHonArc 2.6.18.