pw.mac



I believe Barton has succeeded with it.  Take a look at his code.

                  -s

On Sun, Jun 3, 2012 at 9:02 PM, Richard Hennessy
<rich.hennessy at verizon.net>wrote:

>   I played around with the context stuff and got frustrated because I
> could not get it to work.  I am not sure why, the error message I got was
> useless, something like ?error in errmsg1? or something similar.  So I
> thought, I don?t know if the context mechanism works or not.  I once posted
> a question to this list asking if anyone knew if the context system was
> broken.  I got no reply.  That was probably well over a year ago.  I was
> trying this method back then and I was having problems.  So I decided to
> bypass that subsystem and came up with simp_given() instead.  If anyone can
> get it to work then I would use it. I have doubts, no one replied, makes
> you wonder.  I have doubts about the new simp_given() but it will do for
> now.  If someone can do better with contexts then kudos to them.
>
> Rich
>
>
>  *From:* Stavros Macrakis <macrakis at alum.mit.edu>
> *Sent:* Sunday, June 03, 2012 6:22 PM
> *To:* Richard Hennessy <rich.hennessy at verizon.net>
> *Cc:* Barton Willis <willisb at unk.edu> ; maxima at math.utexas.edu
> *Subject:* Re: [Maxima] pw.mac
>
> Richard,
>
> I don't understand why you're building messy wheels within wheels to work
> around the quirks of assume/forget when the context mechanism was designed
> precisely to solve the problem you have -- simply and straightforwardly
> (and if it doesn't, it's a bug in the context system, not your code).
>
> As for
>
>
> there is no way to fix Maxima if it allows inconsistent facts to be
> present at the same time, which it does.
>
>
> Are you referring to your sequence (assume(c>1), c:-1)?  Yes, it is true
> that Maxima does not object to this. Not sure how it could. Checking the
> compatibility of every assignment with the assumption database would make
> assignments prohibitively expensive.  Anyway, even leaving aside
> theoretical limits on inference, Maxima's assumption inference engine is
> pretty weak .
>
>              -s
>
>  On Sun, Jun 3, 2012 at 11:38 AM, Richard Hennessy <
> rich.hennessy at verizon.net> wrote:
>
>> I have come up with a fix to the leaking problem in simp_given() that
>> fixes these two bugs and I don't think it can get any better than this even
>> if you use contexts, but I am not sure of that.
>>
>> (%i19) kill(all);
>> (out0)                                               done
>> (%i1) load(pw);
>> (out1) C:/Maxima-5.27.0/share/maxima/**5.27.0/share/contrib/pw.mac
>> (%i2) assume(c>0);
>> (out2)                                             [c > 0]
>> (%i3) facts();
>> (out3) [kind(sinh, one_to_one), kind(log, one_to_one), kind(tanh,
>> one_to_one), kind(log, increasing), c > 0]
>> (%i4) c:-1;
>> (out4)                                               - 1
>> (%i5) facts();
>> (out5) [kind(sinh, one_to_one), kind(log, one_to_one), kind(tanh,
>> one_to_one), kind(log, increasing), c > 0]
>> (%i6) simp_given(c,c>1);
>> (out6)                                               - 1
>> (%i7) facts();
>> (out7) [kind(sinh, one_to_one), kind(log, one_to_one), kind(tanh,
>> one_to_one), kind(log, increasing), c > 0]
>> (%i8) simp_given(signum(c),c>1);
>> (out8)                                                1
>> (%i9) facts();
>> (out9) [kind(sinh, one_to_one), kind(log, one_to_one), kind(tanh,
>> one_to_one), kind(log, increasing), c > 0]
>> (%i10) d:c;
>> (out10)                                              - 1
>> (%i11) facts();
>> (out11) [kind(sinh, one_to_one), kind(log, one_to_one), kind(tanh,
>> one_to_one), kind(log, increasing), c > 0]
>> (%i12) simp_given(signum(c),c>d);
>> (out12)                                               1
>> (%i13) simp_given(signum(c),d>0);
>> (out13)                                               1
>> (%i14) facts();
>> (out14) [kind(sinh, one_to_one), kind(log, one_to_one), kind(tanh,
>> one_to_one), kind(log, increasing), c > 0]
>> (%i15) simp_given(signum(d),d>0);
>> (out15)                                              - 1
>> (%i16) facts();
>> (out16) [kind(sinh, one_to_one), kind(log, one_to_one), kind(tanh,
>> one_to_one), kind(log, increasing), c > 0]
>> (%i17)
>>
>> This is better but still wrong in some ways but there is no way to fix
>> Maxima if it allows inconsistent facts to be present at the same time,
>> which it does.
>>
>> Rich
>>
>> PS Here is the new improved and better simp_given().
>>
>> simp_given(__e, [__fcts]) ::=
>> buildq
>> (
>>   [__e,__fcts],
>>   block
>>   (
>>       [_fct, _otherfacts:facts()],
>>       unwind_protect
>>       (
>>           (
>>               apply(assume, __fcts),
>>               expand(__e, 0, 0)
>>           ),
>>           for _fct in facts() do
>>           (
>>               if not member(_fct, _otherfacts) then
>>                   apply('forget, ['_fct])
>>           )
>>       )
>>   )
>> );
>>
>> I have updated pw.mac on www.sourceforge.net with this fix.  I changed
>> the version number to 6.5.
>>
>>
>>
>> -----Original Message----- From: Richard Hennessy
>> Sent: Saturday, June 02, 2012 7:34 PM
>> To: Barton Willis ; Stavros Macrakis
>>
>> Cc: maxima at math.utexas.edu
>> Subject: Re: [Maxima] pw.mac
>>
>>  Oops, your both right.  I didn't catch these cases. It is a bug.
>> Contexts
>> should fix that.
>>
>>
>> -----Original Message----- From: Barton Willis
>> Sent: Saturday, June 02, 2012 5:25 PM
>> To: Stavros Macrakis ; Richard Hennessy
>> Cc: maxima at math.utexas.edu
>> Subject: RE: [Maxima] pw.mac
>>
>>
>> A crazy chained assignment:
>>
>> (%i3) (a : b, b : c, c : d, d : e)$
>>
>> No facts:
>>
>> (%i4) facts();
>> (%o4) []
>>
>> Call simp_given on 1 with one fact a < b
>>
>> (%i5) simp_given(1,a<b);
>> (%o5) 1
>>
>> And oops--a fact leaked out:
>>
>> (%i6) facts();
>> (%o6) [d>c]
>>
>> Isn't this a bug?
>>
>>
>>
>> --Barton
>>
>>
>>
>>  ______________________________**_________________
>> Maxima mailing list
>> Maxima at math.utexas.edu
>> http://www.math.utexas.edu/**mailman/listinfo/maxima<http://www.math.utexas.edu/mailman/listinfo/maxima>;
>>
>
>