I was working on an s(CASP) encoding last week, and learned something that gave me a better intuition for how to encode things well.
I needed to encode what counted as a business, and there were two things. I needed to encode what counted as a business entity, and there were 7 things, each of which required a business, which meant there were 14 possibilities total. Then I needed to encode what counted as an executive appointment, and there were three. One of them required a business, which meant that branch had two options. One of them required a business…
I’ve been spending a lot of time recently thinking about the problem of choosing how to model things when doing automated legal reasoning.
Just so we’re on the same page, when I talk about a model, there is a real thing, of some sort, and there is a representation of that thing in a language which is useful for some reason. The representation is the model, and the language is the modelling language.
The modelling language is not the thing itself, so you have to have a connection between the real thing you are modelling, and the terms you use…
Yesterday I posted about what justified stable model query-driven constraint answer set programming is. Now let me tell you a little bit about why I think all of that matters.
The higher-order logic features of s(CASP) make it very easy to implement forms of defeasibility the way it is implemented in legal writing, which is that the relationship is noted only in the default, or in the exception, but not in both.
In law we need to be able to ask questions about laws that don’t involve specific fact scenarios. For example, “under these rules, can a person be both…
I spent some time today trying to understand where s(CASP) fits into the world of programming languages more generally, and here’s what I think is going on.
Remember, I’m not an expert. This is my amateur understanding after playing with it for a few days.
The usual paradigm for programming languages is called imperative programming, in which you basically tell the computer what to do, and in what order.
Lots. Object-oriented programming, functional programming, logic programming. …
OK, I think I’m going to call it. Flora-2 is no longer my favourite tool for doing Rules as Code. My new favourite is s(CASP).
I’m working on a paper for the International Conference on Artificial Intelligence and Law at work, and I’m doing an experiment, the results of which are blowing me away.
I took a piece of legislation recommended by a potential industry partner, and encoded it in s(CASP). I did it as faithfully as I could, which means I did not try to encode what I thought it meant, I tried to encode what it said. I…
Gardens by the Bay is a set of two greenhouses, similar to the Muttart Conservatory in Edmonton. Dot decided that we needed to do something touristy, so I took her for Valentines Day.
The two greenhouses are the Flower Dome, and the Cloud Forest. We went to Cloud Forest, first, and this is what you see as soon as you walk in the door.
It’s an indoor waterfall probably about 6 stories high. You walk around it, then take an elevator to the top, and walk down through the middle, with excursions out onto flying walkways. The top walkway…
Flora-2 is a logic programming language that implements defeasible reasoning using a method called “defaults and argumentation theories.”
Here’s how it works.
The first thing you have to do is choose the argumentation theory that you want, but Flora-2 has a very intuitive default.
Flora-2 gives you the option of specifying that some rules override others either by identifying the rules, or by identifying the conclusions. If you want to identify the rules, you need to give them tags. They can take more than one, and more than one rule can have the same tag. …
I was pointed by a colleague to a paper on SSRN by two law professors proposing a method for making smart contracts “legal.”
What they mean, I take it, is that they want to make sure that smart contracts are enforceable in court the way “normal” contracts are. And the method they propose is a combination of natural language and code.
This is similar to the way clause.io uses blocks of natural language text combined with parallel blocks of code to allow you to generate smart contracts.
I don’t get it.
Let’s say you have a “smart contract” that is…
I have been out of quarantine for a week, now. Usually the first thing to do is get a bus pass, but the transit system here let’s you tap your credit card as you get on, and again when you get off, so that wasn’t required.
Getting internet to the apartment has been a giant pain. It’s taking weeks. And I don’t have an access card for the university buildings, so getting online has been a struggle.
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…
Blawx features strings, numbers, and booleans, and I have wanted…
Lawyer, Round Table Law; 2018/2019 ABA Innovation Fellow; Sessional Instructor, University of Alberta; Computational Law (Symbolic AI) Researcher, CCLaw @ SMU