From: Phil Thornley <phil.jpthornley@gmail.com>
Subject: Re: SPARK : third example for Roesetta - reviewers welcome
Date: Sun, 15 Aug 2010 21:58:20 -0700 (PDT)
Date: 2010-08-15T21:58:20-07:00 [thread overview]
Message-ID: <846423d1-82e8-4bb8-87a9-e667c20e8c16@k10g2000yqa.googlegroups.com> (raw)
In-Reply-To: op.vhh3bwnwxmjfy8@garhos
On 15 Aug, 23:27, Yannick Duchêne (Hibou57) <yannick_duch...@yahoo.fr>
wrote:
> There is no Magic here, what you do not have in Check annotations, you
> hide it in user rules. The reason why I do not like it, is because you do
> not see the proofs any more (or great part of it are missing), this is not
> any more part of the source. Proofs should come with the implementation. I
> cannot dissociate both.
User rules are as formal or as informal as you choose to make them.
In my version of this example I have some user rules with informal
justifications - eg:
/*---------------------------------------------------------
-- Rule 1:
-- Justification:
-- X + Y >= 2*X, so (X + Y) div 2 >= X.
---------------------------------------------------------*/
binary_search_rule(1): (X + Y) div 2 >= X
may_be_deduced_from
[ X <= Y,
X >= 1,
Y >= 1] .
/*---------------------------------------------------------
-- Rule 2:
-- Justification:
-- X + Y <= 2*Y, so (X + Y) div 2 <= Y.
---------------------------------------------------------*/
binary_search_rule(2): (X + Y) div 2 <= Y
may_be_deduced_from
[ X <= Y,
X >= 1,
Y >= 1] .
if you need more formality then first define a couple of integer
variables x and y in a .fdl file:
title procedure search_rules:
var x, y : integer;
end;
then prove the following VC using the Proof Checker:
search_rules_1.
H1: x <= y .
H2: x >= 1 .
H3: y >= 1 .
->
C1: (x + y) div 2 >= x .
C2: (x + y) div 2 <= y .
The only manual step in this is the translation of the rule to the VC
- and so long as you use the same names with just the case changed (X -
> x) and layout the VC similarly to the rule this step is very easy to
validate manually.
Cheers,
Phil
next prev parent reply other threads:[~2010-08-16 4:58 UTC|newest]
Thread overview: 61+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-08-15 6:17 SPARK : third example for Roesetta - reviewers welcome Yannick Duchêne (Hibou57)
2010-08-15 6:27 ` Yannick Duchêne (Hibou57)
2010-08-15 6:35 ` Jeffrey Carter
2010-08-15 6:39 ` Yannick Duchêne (Hibou57)
2010-08-15 18:42 ` Phil Thornley
2010-08-15 19:32 ` Yannick Duchêne (Hibou57)
2010-08-15 20:12 ` Phil Thornley
2010-08-16 10:08 ` Jacob Sparre Andersen
2010-08-15 19:57 ` Yannick Duchêne (Hibou57)
2010-08-15 20:07 ` Yannick Duchêne (Hibou57)
2010-08-15 20:57 ` Yannick Duchêne (Hibou57)
2010-08-15 22:19 ` Yannick Duchêne (Hibou57)
2010-08-16 5:51 ` Phil Thornley
2010-08-16 16:42 ` Yannick Duchêne (Hibou57)
2010-08-16 17:07 ` Mark Lorenzen
2010-08-15 22:09 ` Jeffrey Carter
2010-08-15 22:27 ` Yannick Duchêne (Hibou57)
2010-08-16 4:58 ` Phil Thornley [this message]
2010-08-16 7:50 ` Stephen Leake
2010-08-16 8:37 ` Phil Thornley
2010-08-16 16:55 ` Yannick Duchêne (Hibou57)
2010-08-16 20:40 ` Peter C. Chapin
2010-08-16 22:38 ` Yannick Duchêne (Hibou57)
2010-08-16 23:43 ` Peter C. Chapin
2010-08-17 9:15 ` Phil Thornley
2010-08-17 10:32 ` Peter C. Chapin
2010-08-17 19:53 ` Phil Thornley
2010-08-17 22:15 ` Dmitry A. Kazakov
2010-08-18 10:44 ` Phil Thornley
2010-08-18 16:33 ` Dmitry A. Kazakov
2010-08-19 6:19 ` Categories for SPARK on Rosetta Code (Was: SPARK : third example for Roesetta - reviewers welcome) Jacob Sparre Andersen
2010-08-20 8:40 ` Phil Thornley
2010-08-20 9:15 ` J-P. Rosen
2010-08-20 9:23 ` Dmitry A. Kazakov
2010-08-20 9:55 ` J-P. Rosen
2010-08-20 10:24 ` Dmitry A. Kazakov
2010-08-20 11:36 ` J-P. Rosen
2010-08-20 12:25 ` Dmitry A. Kazakov
2010-08-20 13:28 ` J-P. Rosen
2010-08-20 14:05 ` Dmitry A. Kazakov
2010-08-20 16:23 ` J-P. Rosen
2010-08-20 16:41 ` Dmitry A. Kazakov
2010-08-20 15:34 ` (see below)
2010-08-20 16:42 ` Dmitry A. Kazakov
2010-08-22 8:11 ` Categories for SPARK on Rosetta Code Jacob Sparre Andersen
2010-08-22 8:53 ` Dmitry A. Kazakov
2010-08-20 8:37 ` SPARK : third example for Roesetta - reviewers welcome Phil Thornley
2010-08-17 8:16 ` How to structure examples for Rosetta Code (Was: SPARK : third example for Roesetta - reviewers welcome) Jacob Sparre Andersen
2010-08-17 19:16 ` How to structure examples for Rosetta Code Simon Wright
2010-08-17 20:53 ` Peter C. Chapin
2010-08-17 21:24 ` Simon Wright
2010-08-17 2:07 ` SPARK : third example for Roesetta - reviewers welcome Stephen Leake
2010-08-16 4:41 ` Phil Thornley
2010-08-16 17:03 ` Yannick Duchêne (Hibou57)
2010-08-15 20:04 ` Jacob Sparre Andersen
2010-08-15 20:19 ` Yannick Duchêne (Hibou57)
2010-08-15 21:40 ` Jeffrey Carter
2010-08-15 22:13 ` Yannick Duchêne (Hibou57)
2010-08-16 4:29 ` Phil Thornley
2010-08-16 17:11 ` Phil Thornley
2010-08-20 9:06 ` Phil Thornley
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox