Commit fee930ef by MARCHE Claude

### fix mistakes in Coq driver related to division and modulo

parent 3a1212a5
 ... ... @@ -96,6 +96,10 @@ theory int.MinMax end (* removed: Coq Zdiv is NOT true Euclidean division: Zmod can be negative, in fact (Zmod x y) has the same sign as y, which is not the usual convention of programming language either. theory int.EuclideanDivision prelude "Require Import Zdiv." ... ... @@ -110,9 +114,14 @@ theory int.EuclideanDivision remove prop Div_1 end *) theory int.ComputerDivision (* Coq Z0div provides the division and modulo operators with the same convention as mainstream programming language such C, Java, OCaml *) prelude "Require Import ZOdiv." syntax function div "(ZOdiv %1 %2)" ... ...
 ... ... @@ -10,7 +10,11 @@ Find the sum of all the multiples of 3 or 5 below 1000. theory DivModHints use import int.Int use import int.EuclideanDivision use import int.ComputerDivision lemma mod_div_unique : forall x y q r:int. y > 0 /\ x = q*y + r /\ 0 <= r < y -> r = mod x y /\ q = div x y lemma mod_succ_1 : forall x y:int. x >= 0 /\ y > 0 -> ... ... @@ -34,7 +38,7 @@ end theory SumMultiple use import int.Int use import int.EuclideanDivision use import int.ComputerDivision (* [sum_multiple_3_5_lt n] is the sum of all the multiples of 3 or 5 below n] *) ... ... @@ -64,6 +68,10 @@ theory SumMultiple use DivModHints lemma mod_15: forall n:int. mod n 15 = 0 <-> mod n 3 = 0 /\ mod n 5 = 0 lemma Closed_formula_n: forall n:int. n > 0 -> p (n-1) -> mod n 3 <> 0 /\ mod n 5 <> 0 -> p n ... ... @@ -91,7 +99,7 @@ module Euler001 use import SumMultiple use import int.Int use import int.EuclideanDivision use import int.ComputerDivision let solve n = { n >= 1 } ... ...
This diff is collapsed.
 ... ... @@ -49,6 +49,9 @@ end theory EuclideanDivision (* division and modulo operators with the convention that division rounds down, and thus modulo is always non-negative *) use import Int use import Abs ... ... @@ -72,6 +75,11 @@ end theory ComputerDivision (* division and modulo operators with the same conventions as mainstream programming language such C, Java, OCaml, that is division rounds towards zero, and thus (x mod y) as the same sign as x *) use import Int use import Abs ... ...
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!