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.
