I took the opportunity over the last couple of days to spend some time working on long-planned upgrades to Blawx. It has been partly successful, and partly an exercise in frustration.

The frustration comes from the fact that I’m working with limited processing power here in my hotel room in Singapore, having only brought a Surface Go tablet with me for writing code. To get any further, I think I’m going to have to bite the bullet and pay for a development server.

But here’s what I’ve accomplished so far…

Dates, Times, and Durations

Image for post
Image for post
Date, Time, Datetime, and Duration value blocks in Blawx

Blawx features strings, numbers, and booleans, and I have wanted for a very long time to expand that to include dates, times, datetimes, and durations. That process is now complete. The dev branch has new datatype blocks, new data value blocks, and I also implemented a number of date math functions. …

January 14, 2021 was “World Logic Day”, and in celebration of it the Department of Computing Science at the University of Texas Dallas invited Robert Kowalski to give a speech on Logical English.

Image for post
Image for post
Photo of Dr. Robert Kowalski, by Yongyuth Permpoontanalarp.

If you don’t know who Dr. Robert Kowalski is, he more or less invented logic programming in the 1970s. In the logic programming community, he is a “big deal.” He is also the first person I’m aware of to have used logic programming languages as a knowledge representation tool for legislation. …

Dot and I are on day 5 of a 14-day isolation. It’s dull, but we have distractions. We marvel at the people getting 7am Tennis lessons.

Image for post
Image for post

Every day we take in the sunrise on the balcony with a cup of coffee. Today I tried making Americano using the hot water dispenser, but the espresso was better. And occasionally we will play Go on the set my brother Jeff gave me for Christmas…

Image for post
Image for post

I thought that given it is a new year, it was time to refresh the way the Diary looks. So the Diary has become a publication on Medium, which you can follow without needing to follow me personally, and to which I can add other members of the SMU Centre for Computational Law team.

I would love it if you would share the link to the diary with your friends networks interested in Rules as Code, Smart Contracts, Legal Tech, and Computational Law.

Update: Singapore Arrival

I am now physically located in Singapore, waiting out the mandatory two-week isolation in a lovely hotel room. Travel and jet lag has been challenging. I’m shopping for accommodations, and doing the other things involved in setting up ones life as an ex-pat. …

This is a place for me to write little stories to share with my family and friends about my time in Singapore, which is known as the Little Red Dot.

I’m Jason. This is Dot. We are a little jet-lagged right now, so we’re still waking up before the sun. But the view from our balcony is excellent, and having a balcony is a luxury for a SHN (“stay home notice”) designated facility, so we’re not complaining.

Image for post
Image for post
Dot enjoying an espresso on the balcony of the hotel.

We’re going to be quarantined in this hotel room for another 13 days, so there will be nothing but food to take pictures of for quite a while. The hotel room is nice, the food has been good, but unless I acquire a sudden interest in soccer, I don’t think the TV channels are going to be any help. …

If you’ve been following along for the last few weeks, you know that I’ve been playing with different methods of representing event calculus, and aiming at being able to explain the outcomes.

This week I’d like to show you an experiment I did with a tool called Carneades. Carneades is named for the ancient Greek philosopher who was famous for having travelled to Rome and given two lectures in two days. The first lecture was for the existence of justice, and the second lecture was against it.

Carneades believed that wisdom came from being able to argue both sides of an issue. Carneades the tool is well-named, because it is a tool for argumentation theory, which is the theory of how we represent and reason about arguments, as opposed to deductive rules. …

Alright, fellow legal nerds, let’s get deep in the weeds, here.

What is Event Calculus?

A “calculus” is a way of reasoning about something. Event Calculus is a way of reasoning about events, and their consequences. I use consequences here to mean “what happens after those events have occured, and because those events have occurred.” So it is a calculus of causes, and a calculus of time.

What is Discrete Event Calculus?

There are a bunch of different varieties of Event Calculus, or EC. One variety is discrete event calculus. The difference between regular event calculus and discrete event calculus is that discrete event calculus treats moments in time as being discrete points. In essence, you can say that the time of an event is 1, or you can say that it is 2, but you cannot say that it was 1.5. Maybe the numbers refer to seconds, maybe they refer to years, it doesn’t matter. …

So yesterday, I learned about something called s(CASP) that I needed to try.

Today I tried it. And it’s awesome. Here’s how it went.


I actually came across s(CASP) by accident while looking for something else. The name, I take it, means stable model constraint answer set programming. Which is the sort of name only a computer scientist could love. It was created by a team at the Joaquin Arias, Zhuo Chen, Manuel Carro, and Gopal Gupta at the IMDEA Software Institute at Universidad Politecnica de Madrid.

Installing Ciao

The instructions were here. I have WSL2 running on my Windows 10 machine, so I followed the instructions for downloading and installing the Ciao language, first. It did not work. I ran portions of the manual installation process, then restarted my terminal, and eventually it seemed to have done something. …

Image for post
Image for post
Three complicated knots.

I’m working on some materials to help bring our junior researchers up to speed on Flora-2, and I noticed something interesting when trying to explain how Flora-2 does negation differently than other logic programming languages.

Three Nots

In Flora-2 there are three different ways of saying “not”, and they all mean different things.

Classical Negation

Classical negation comes from formal logic, and is expressed using the operator \neg. If you say \neg raining, what you are saying is that the truth-value of the statement raining is known to be false. That is to say, you don’t need to look out the window and check. …

If you’ve been following along over the last few weeks, you will know that I’ve been working on writing some code to do reasoning about time.

I’ve been working on Allen Interval Algebra, but in order to use Allen Interval Algebra you need to model your problem as a set of intervals. That is to say, you need to model the things that happen as happening over a period of time, as opposed to at a specific time. …


Jason Morris

Lawyer, Round Table Law; 2018/2019 ABA Innovation Fellow; Sessional Instructor, University of Alberta; Computational Law (Symbolic AI) Researcher, CCLaw @ SMU

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store