This looks good to me, I'll start to incorporate this into my code/documentation as I get time.

related issues:

You haven’t included the Heyting type algebras, such as intuitionisticLogic, on your diagram but I guess there are no issues with this?

One difference is 'pseudo complement' vs. 'implication' vs. 'not'. I believe that these algebras could equivalently be defined in terms of either 'pseudo complement' or 'implication'. I get the impression that the usual style in FriCAS/Axiom is to include all options in a single category although I think it would be confusing to include the 'not' operation in Heyting algebras?

The other difference seems to be that the the Heyting algebras tend to be infinite, or should I say 'free' in meet or join or both? That is they are defined like an expression with variables. I guess there could also be a Boolean algebra implemented in this way? Would this be worthwhile, if only for completeness? As we discussed in an earlier thread, I was considering implementing this using 'Kernel' but if I understood your reply correctly the extra complexity would not be worthwhile (I don't want to delve into undocumented stuff if I can avoid it).

According to the Steven Vickers book, terminology around concepts like 'frame' is not fixed amongst different authors. His definition (which follows Johnstone) is:
1) every subset has a join
2) every finite subset has a meet
3) binary meets distribute over joins
So frames are only different for infinite subsets, therefore its not good enough to define meets of a subset,as I did, like this:
/\(List %) -> %
I need a way to define infinite subsets, I guess it would have to be an expression? I will continue to read and experiment on the subject but any pointers from anyone here would be welcome. The aim is to represent topology concepts, especially where these concepts are used in computer science.

I'm not sure what to do about the naming of operators in Preorder and poset. I suspect its the same issue as mentioned by prof. Grabmeier that these operators need to be renamed depending on context. Would it be acceptable if I defined both '<=' and 'implies'? I would have liked to use '=>' for implies but that’s used by SPAD for other things.

Martin

On 17/08/15 13:03, Waldek Hebisch wrote:
Martin Baker wrote:

What I would like to see is the powerful capabilities in FriCAS/Axiom
for equation solving and so on in "classic mostly commutative algebra"
to be packaged in such a way that they could be adapted for other
axiomatic systems.

Most useful to me would be the ability to write equation solvers in
matrix, quaternion, Clifford algebras where the variables represent, not
real/complex numbers, but elements of these algebras.

I think lot can be done in this direction.  However, it is a big
topic, so let me postpone it a bit.

Another example is that I am writing code for different types of logic
(Heyting, frames, etc.) and this includes domains for poset, lattice and
so on.

I have documented this here:

http://www.euclideanspace.com/prog/scratchpad/mycode/discrete/logic/

or, if you don't like documentation, you can go straight to the code here:

https://github.com/martinbaker/multivector/blob/master/logic.spad

So could you include this in any changes you are making, in particular:

1) Include poset, frame, lattice, etc. into the category hierarchy.
2) Generalise equation solving capabilities to allow use for other
structures.
3) Include axioms in category definitions.

Concerning logic.spad, I think it needs some changes/corrections:

1) In Preorder the Axiom lines mention '<=' as operation
    name but the only exports 'implies'.  Actually, in
    FriCAS the 'PartialOrder' category represents the
    same concept (unlike many expositions of orders
    'PartialOrder' does not assume weak antysymmetry).
2) AFAICS usual definiton of lattice does on include top
    and bottom elements.  If they are present we have special
    kind of lattice (Wikipedia calls it bounded lattice, but
    other names also seem to be in common use).
3) IMO FiniteLattice should be a category.  Such lattice
    automatically has top and bottom elements.
4) I am not sure if we want to use name 'true' for top
    element of a lattice (and 'false' for bottom).  It is
    natural in context of logic, but not so natural in
    other contexts.
5) It is not clear for me what you want to represnt by
    Frame.  Namely, due to associativity in a lattice
    there is naturally defined join and meet for any
    finite subset.  IIRC frames used in logic have
    a bit richer structure than what you define in Frame.
6) Once we have Lattice current Logic should inherit from
    Lattice.  Given that we want to represnt nonclassical
    logics we need separate BooleanAlgebra for classical
    case.



So I think we should have something like:

    MeetSemilattice                  JoinSemilattice
    |    |                         /       |
    |    V                        /        V
    |  BoundedMeetSemilattice    /   BoundedJoinSemilattice
    |                       \   /          |
    V                        \ /           |
    Lattice    <--------------X            |
        \                      \           V
         ---------------------- > --->  BoundedLattice
          \                            /    |
           \                          /     V
            \                        /  Logic
             \                      /     |
      DistributiveLattice          /      |
               \                  /       |
          BoundedDistributiveLattice      |
                                \         |
                                 \        V
                                BooleanAlgebra


--
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