On 5 April 2015 at 12:32, Martin Baker <[email protected]> wrote:
> I don't know if this is relevant to your discussion about kernels (most of
> it goes over my head) but I thought I might mention something I would like
> to implement, at some time in the future, in case there is some requirement
> that is relevant?
>
> Some time ago I implemented intuitionistic logic with a rep like this:
>
> ILogic() : Exports == Implementation where
> ....
>   Rep := Union(_
>          const : Record(val : Symbol), _
>          var : Record(str : String), _
>          binaryOp : Record(typ : Symbol, c1 : %, c2 : %), _
>          unaryOp : Record(typ : Symbol, c1 : %)_
>          )
>
> I would like to make this more general and allow many types of propositional
> logic and associated algebras such as boolean, (co)Heyting algebra and so
> on.
>
> In OpenAxiom Gaby implemented PropositionalFormula using Kernel like this:
>
> PropositionalFormula(T: SetCategory): Public == Private where
> ....
>     Rep == Union(T, Kernel %)
>
> Would it be better if I used Kernel like this?

Kernel provides the means by which a symbolic operator like 'sin' can
be applied to a list of arguments. This is where things like

  sin(x)

come from.  We can also define new operators and use them in expressions like

  f:=operator 'f
  f(x)

The Expression domain in FriCAS consists of ratios of polynomials and
a given set of kernels with arguments from Expression (defined
recursively). In your case you might have operators for each
"binaryOp" and "unaryOp". Operators have user specifiable mechanisms
for evaluation, printing etc. so I think it might not be so hard to
use this for your purposes.

> I get the impression most of
> the issues you are discussing are around caching.

One of the important aspects of Kernel is that it a "CachableSet"
which means that a special sorted table is constructed consisting of
unique (not equal) kernels in a given order.  Each such kernel is
assign a unique integer encoding its position in this list.  I am
especially interested in alternate means of constructing this table or
something equivalent.

> I suspect there would not
> be the same performance issues for discrete algebra like this? I might even
> question if FriCAS/pan-axiom is the way to go for discrete algebra? I
> suspect you are optimising for more numerical based algebra?

The terminology "numerical based algebra" and "discrete algebra" seems
strange but I think I know what you mean.  I would say "no" the
concept of a CachableSet is not just for  "numerical based algebra".
It is much more general than that.

>
> Apologies if I have misunderstood your discussion, my SPAD skills are
> getting a bit rusty.
>

It would be nice to have you back working on FriCAS. :)

-- 
You received this message because you are subscribed to the Google Groups 
"FriCAS - computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/fricas-devel.
For more options, visit https://groups.google.com/d/optout.

Reply via email to