comp.lang.ada
 help / color / mirror / Atom feed
From: "Yannick Duchêne (Hibou57)" <yannick_duchene@yahoo.fr>
Subject: Re: Lost in translation (with SPARK user rules)
Date: Sun, 30 May 2010 11:57:14 +0200
Date: 2010-05-30T11:57:14+02:00	[thread overview]
Message-ID: <op.vdii9osjule2fv@garhos> (raw)
In-Reply-To: 927d98bd-9219-426d-815a-392c28211908@j12g2000pri.googlegroups.com

Le Sun, 30 May 2010 11:26:12 +0200, Phil Thornley  
<phil.jpthornley@googlemail.com> a écrit:
> You can see why this is sensible (even if it has some drawbacks*).
> Generally the way that a user rule is written is in response to an
> unproven conclusion in a simplified VC, so the author of the rule uses
> the final form of the unproven VC to write the rule. Therefore the
> rule can only be reliably applied at the point where the VC has
> reached its final form.
Yes, I know. The nut with me, is that I try to find the best way to use  
these rules as general rules, and precisely avoid to write rules which  
would only match expressions in a given unproved VC.

The technique is evolving, it works better than at my very first attempts.  
May be I will write some french pages about it some day.

> I guess it might be possible for the Simplifier to try all the user
> rules at each stage of the process - but the developers of the tool
> have been concentrating heavily on making simplification as quick as
> possible (quite rightly in my view) and would not want to do anything
> that might slow it down without a very strong argument for the
> advantages of doing that.
I guess this is important, as I've notice the simplifier is easily slowed  
down as the number of checks increase (or may be this is the effect of my  
user rules, which I suppose, are not as much efficiently handled as the  
built-in ones).

> (Of course nothing is ever simple, for example what happens if one
> rewrite rule requires another to be applied before its sideconditions
> are satisfied - are all such rules tried repeatedly until none are
> used, or is it a once-only pass? etc...)
That is why, except with one unique single case (a rewrite rule involving  
modular types), my own rule is to not use rewrite rules at all, because it  
can easily become a one way trap only. Inference rules are more plastic  
and does not stick anything.

-- 
There is even better than a pragma Assert: a SPARK --# check.
--# check C and WhoKnowWhat and YouKnowWho;
--# assert Ada;
--  i.e. forget about previous premises which leads to conclusion
--  and start with new conclusion as premise.



  reply	other threads:[~2010-05-30  9:57 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-26 10:09 Lost in translation (with SPARK user rules) Yannick Duchêne (Hibou57)
2010-05-26 10:38 ` Phil Thornley
2010-05-26 10:57   ` Yannick Duchêne (Hibou57)
2010-05-26 14:15     ` Pascal Obry
2010-05-26 14:28       ` Dmitry A. Kazakov
2010-05-26 19:28         ` Yannick Duchêne (Hibou57)
2010-05-26 20:14           ` Dmitry A. Kazakov
2010-05-26 21:14             ` Yannick Duchêne (Hibou57)
2010-05-26 21:15               ` Yannick Duchêne (Hibou57)
2010-05-26 22:01             ` Peter C. Chapin
2010-05-27 12:32               ` Mark Lorenzen
2010-05-27 18:34               ` Pascal Obry
2010-05-27 19:18                 ` Yannick Duchêne (Hibou57)
2010-05-28  9:39                 ` Maciej Sobczak
2010-05-28 11:57                 ` SPARK and testing. Was: " Peter C. Chapin
2010-05-28 12:59                   ` SPARK and testing Peter C. Chapin
2010-05-28 23:06                     ` Yannick Duchêne (Hibou57)
2010-05-26 19:16       ` Lost in translation (with SPARK user rules) Yannick Duchêne (Hibou57)
2010-05-26 19:32         ` Pascal Obry
2010-05-26 20:56           ` Yannick Duchêne (Hibou57)
2010-05-26 22:06           ` Peter C. Chapin
2010-05-27 18:39             ` Pascal Obry
2010-05-26 22:17         ` Peter C. Chapin
2010-05-27 10:11       ` Sockets package in SPARK (Was: Lost in translation (with SPARK user rules)) Jacob Sparre Andersen
2010-05-27 18:41         ` Pascal Obry
2010-05-27 19:20           ` Yannick Duchêne (Hibou57)
2010-05-28  7:43             ` Sockets package in SPARK Jacob Sparre Andersen
2010-05-27  8:13     ` Lost in translation (with SPARK user rules) Yannick Duchêne (Hibou57)
2010-05-27 10:55       ` Yannick Duchêne (Hibou57)
2010-05-27 11:32         ` Yannick Duchêne (Hibou57)
2010-05-27 11:41           ` Phil Thornley
2010-05-27 12:42             ` Yannick Duchêne (Hibou57)
2010-05-27 12:22         ` stefan-lucks
2010-05-27 11:37           ` Yannick Duchêne (Hibou57)
2010-05-27 11:57           ` Phil Thornley
2010-05-27 12:36             ` Yannick Duchêne (Hibou57)
2010-05-27 13:38               ` Phil Thornley
2010-06-03  2:44                 ` Yannick Duchêne (Hibou57)
2010-05-27 19:53 ` Warren
2010-05-29 23:03 ` Yannick Duchêne (Hibou57)
2010-05-30  6:55   ` Yannick Duchêne (Hibou57)
2010-05-30  9:30     ` Phil Thornley
2010-05-30  9:46       ` Yannick Duchêne (Hibou57)
2010-05-30  9:26   ` Phil Thornley
2010-05-30  9:57     ` Yannick Duchêne (Hibou57) [this message]
2010-06-01  5:42 ` Yannick Duchêne (Hibou57)
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox