It turns out that with the set implementation together with the fact that acyclic graphs are indexed and a generelized dynamic predicate functionality, we can implement a quite interesting class system that glean on common lisps CLOS. In all we do not implement the full protocoll, but we can connect …

A few new operators added, first of all we have the negations, ⊈ ⊄ ⊉ ⊅ ∉ which are self explanatory. The task for this post is that ski on ##prolog asked about solving equations or similar in order to state set equations a little implicit, but also easy generate the set of sets etc …

I just addded a prolog construct to assign action on unwind and rewind. When you backtrack you undo all changes to a point and when you restore a state you issues rewind actions. In this undo and redo chain you can issue actions. The problem is that this will be …

There has been a missing piece when it comes to set and maps regarding how to interpret unification identity and structural unification or arbritrary unificatoins. Also in exploring how to do this it is advicable to puiggy pack on attributed variables which already enables unification for it's content. The quest …

Last time swi prolog tabling was introduced together with some small extensions. The next level up on this is to make tabling work with interleaving constructs that derive it's roots from kanren. Shorts story is that ,, is an interleaving conjunction and ;; is an interleaving disjunction and once_i(Goal) execute Goal …

Tabling or memoization in guile-log is revised and updated to reflect the interface found in swi prolog. The guile-log implementation uses the postpone system in order e.g. basically a use of delimited continuations, used in the swi prolog implementation as well. The idea is that at the first time …

Micro kanren teaches us that infinities can be avoided e.g. a non depth first search. Depth first searches is the base of prolog. To see the problem consider the predicate f as

I see that swi prolog is landing a closure package. That's good. This led to me dusting off my closure implementation in guile-log which had bit-rotten somewhat and needed a retake. This is now the interface.

A closure can be created simplest with name{X,...Z|Goal} or for non …

Sometimes we don't have currently all information to evaluate an expression, for example in a stream we want to use future values. So it can be nifty to record the evaluation and perform it when values are available. in (logic guile-log guile-prolog delay) we have the tools to do this …

If you read about Mill's Brilliant Light power in the wikipedia article you will notice that it is associated with pseudoscience. And you will get the impression that all are wrong. But is it. We can take one fact that is the base of whole theory, namely that he constructs …

A lot of people find statements like the current desity of the orbitsphere is constant and usually spike and call bullshit due to the impossibility to comb the sphere. Technically correct, but Mills do indeed have a constant current density although not at the south pole and the north pole …

In GUTCP, we have a special transform between to the circular spped of light frame that changes the wavelength from \(2\pi r\) to \(r\). This change of reference frame is mysterious and it is usually a main stumbling block to follow GUTCP. YOu here things like "this is bogus …

What is electromagnetic interaction, what is the nature of space, can we formulate ourself in a vivid mathematical language and hint on generalizartions for further developments. The following is a small observation but i find it
interesting.

Consider a space of buckets \(V_t(r)\). We will consider channels in all …

The question we now shall analyze is the precession of the orbitsphere.
The analysis need to show that we get a factor of two and hence an angular momentum due to precession of the electron orbitsphere. This is needed because the angular momentum of the electron is \(\hbar\) and not …

Last time a couple of months ago I finished a first take to implement the python datamodel in scheme and the result pf-object was demoed. Since then there has been some hard work on my free time and now most of the python language is implemented. I will not tuch …

The python object model is a belowed object system and quite popular. The thing is that scheme is much much more elegant than python and to prove this we implement the python object model semantics in scheme and show how a functional python implementation can look like.

Previously we saw that it's possible to define an electron as a set of great circles on the sphere and for this model conjecturing that the resulting angular momentum is as much as possible, but maintaining a uniform density has the propert that if we put that this angular momentum …

In functional programming we pass the state as arguments to functions. It can be tedious to track all funciton arguments and not only this when we want to add an extra state parameter to a huge codebas you end up in an never ending work of updating function arguments and …

Summary
This question is about covering a sphere with great circles so that the resulting density is uniform and that if we for each circle associate a normal vector, then the magnitude of the sum of them would have an upper limit of 1/2. This has a bearing in …

Considering associate meta information to functions. Closures are at your service but the question I had is if we could make it more functional. The idea is that at each time the value of a handle is unique and cloning is done through copying. Also we would like this to …

To compile scheme to native code natively how would we go about? Generating assebler and have a native compiler is kind of difficult if we want to reach a system that can compile to many different targets. What we would like is to take a scheme file and output byte …

This is a short discussion about how to model a flow of data enabling sharing and moving trough the datastructure in a left to right fashion. We ould like to cut out objects and insert them in other places and maintain everything in a prolog like datastructure.

This is a continuation of the paralell conjunction ideom i've been working on. Previously the system could not handle variables that is located in many branches at the same time e.g. if you set X=1 in one branch and X=2 in another you would get into troubles …

Execution of prolog code is sequential in nature, but one would like to be able to execute multiple algorithm in paralell. Turns out that swi's engine's are quite good att performing this task for us, we can fire up one engine per algorithm and generate answers back and let them …

My next task for guile-log is to make paralell engines store and restorable. This does not work before. In order to see how one can solve this with the already implemented framework, lets first recap paralell engines.

By issuing paralell engines e1,...en we device a scheme where we manually …

Check out wingo's fibers. I added support for fibers in guile-log and guile-log prolog. Fibers are an attempt to model multitasking, like in erlang, with cooperative scheduling (meaning that you need to enter a sleep now and then to allow other threads to run. Currently the interface is very simplistic …

A recent addition to swi prolog is engines. These objects are self contained prolog engines with their own stack that maintaines the computation state and will generate each answer back stepwise. Guile log have implemented the same API and is reachable from the library (logic guile-log guile-prolog engine). A good …

Having had a taste for executing things in paralell in kanren let's move over to guile-log. Executing stuff in paralell is similar but we can take advantage of variable binding beeing done directly on the variable and not bound in a binding data structure. The idea is for each engine …

We will discuss here a kanren version that will modify just partial results and not redo the whole datastructure in order change an underlying value. This means that we are considering paralell executions of code that only modify the data relevant to their code section the solution is a combination …

Swi prolog recently got predicate continuation and knowing of extearamly functional minkanren/microkanren is, one should be able to construct such a beast. Now in most languages you would need to make sure that a cach throw mechanism is working in the return values and somehow knit that together. But …

When coding my prolog VM I noticed that the overhead of a prolog call is in the order of 2M execution per second, and this is typically what I see when executing simple prolog perdicates in swi prolog as well. So all complexity that one need to care for simply …

Consider a variables, a box with a value. Guile-log has the notion of a state. At any point in time all the prolog varibales are bound. And this information can be stored in a state. The guile-log variables are more general than pure prolog variables in that they can be …

Prolog passes all in,out,in/out values as arguments to the predicate. This has the drawback, for out variables, that the variables need to be allocated from the heap and adds complexity and overhead to the predicate. If in stead the out variables could be passed over without making …

Let's consider the task to match something that has a type. We could use the extended matcher and :<, :, :>, as a default. If we don't like it it is possible to redefine it. So what to expect. We genereally constrain types to be of a
certain type.