Skip to Content.
Sympa Menu

coq-club - Re: [Coq-Club] Equations 1.2beta is out!

coq-club AT inria.fr

Subject: The Coq mailing list

List archive

Re: [Coq-Club] Equations 1.2beta is out!


Chronological Thread 
  • 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.





Archive powered by MHonArc 2.6.18.

Top of Page