pw.mac



Yes, I already have.  I tried to use it with no luck.  I get 31 errors running rtest_pw.mac (in the best case) with a context based simp_given().  Maybe I will try to replicate it and post the code that I came up with.  The new simp_given() without contexts gives zero errors.


From: Stavros Macrakis 
Sent: Sunday, June 03, 2012 9:43 PM
To: Richard Hennessy 
Cc: Barton Willis ; maxima at math.utexas.edu 
Subject: Re: [Maxima] 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 
  Sent: Sunday, June 03, 2012 6:22 PM
  To: Richard Hennessy 
  Cc: Barton Willis ; 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