Talk:Semantic code project

From The Jolly Contrarian
Jump to navigation Jump to search

Speculation

The rest of this article is a hastily-drawn sketch. It may provide food for thought, and may just be nonsense.

Create (or select) a standard proposition

Select a standard proposition. A “definition” can be represented as:

definition [

label ISDA 2002 1(c)2 def
term Agreement
operator means
scope Master Agreement
definition Master Agreement and [howmany: all] Confirmations.]

Standard proposition templates will be prefaced with a “c-” and you can find a complete list of the formats here:

Canonical propositional forms: Completed propositions:

Why are there t-versions and c-versions of each standard proposition?

You call templates using the “c-” templates. These designate:

(a) what type of standard proposition it is (is it a right, obligation definition, condition precedent, etc): you do this by the “c-type” template —“c” for “call” — you select (e.g. “c-obligation”)
(b) where to find the static data inputs to populate this particular proposition — this will be a taxonomised address for a particular agreement (e.g. “ISDA 2002 2(a)(iii)”). This is where the “t-” templates come in handy: you need to put your proposition variables into a followable, but still fairly convoluted code environment, which you can access by “{{subst:}}ing” the relevant “t-type” template — “t” for “template standard proposition” — and just dropping the variables into the relevant spaces.
(c) what format to output the proposition. For example “pr” will output it as in JCML[1]; “se” will out put as minimalistic semantic English.

The idea is to take an existing template standard proposition and “{{subst:}}” it into a new structure at the correctly taxonomised address, and then populate it. If there isn’t an existing standard proposition to fit, create a new one — but try to avoid this: the name of the game is to have as few “canonical” propositions as possible.

The form of template standard proposition should be:


Name: t-[NAME]<noinclude>{{c|Template propositions}}</noinclude>
Content:
label: <section begin=label/>{{PAGENAME}}<section end=label/>. <br>
{VAR1}: <section begin={VAR1}/> <section end={VAR1}/>. <br>
{VAR2}: <section begin={VAR2}/> <section end={VAR2}/>. <br>
{VAR3}: <section begin={VAR3}/> <section end={VAR3}/>.

Where:

  • Change [NAME] and {VAR1}, {VAR2} and {VAR3} to suit your proposition. Note ALL ARE CASE SENSITIVE. Suggest using only lowercase. Bear in mind the command calling the template also has to be case-correct.
  • “Label” above is fixed text and will help in correctly taxonomising. Don’t change this. Also leave <noinclude>{{c|Template propositions}}</noinclude> as is — this adds the template to the correct category and helps you to find it later.

The form of template call — this simply extracts the relevant data from the taxonomised address, but doesn’t do anything with it (the “format” parameter designates that), is as follows:


{{{{{format}}} [NAME]
|label={{{template}}}
|{VAR1}={{#lst:template:{{{template}}} [name]|{VAR1}}}
|{VAR2}={{#lst:template:{{{template}}} [name]|{VAR2}}}
|{VAR3}={{#lst:template:{{{template}}} [name]|{VAR3}}}
}}<noinclude>{{c|Containers}}</noinclude>

Create a corresponding proposition in your agreement schema

You should have an agreement schema (a structured skeleton of the agreement in question. This has a unique taxonomised template name following this format: [Code] [Agreement] [Edition Year] [Clause reference]. For example, Section 1(a) of the 2002 ISDA is {{Code 2002 ISDA 1(a)}}

Create the new template (e.g. {{Code 2002 ISDA 1(a)}}) and call the template proposition using the “c-” template operator. For example, to: if you want to put an “application” operator in {{Code ISDA 2002 1(a)}} template, insert: {{c-application|ISDA 2002 1(a)1}} there. Note the 1: this is to distinguish between different instances of “application” that appear in clause 1(a), so not necessary if only one, but good practice.

If there is not an existing container, this should prompt you for a bunch of inputs which are not there yet (eg {{{label}}}, {{{action}}} etc).

Render

You choose your rendering by the parameter “format” in the “c-” template.

  • pr means “proposition”: this is the inputs into the proposition listed as they are.
  • se means “semantic”: This is the inputs into the proposition constructed into minimal English
  • std means “standard” legal English: so idiomatic, but not legalese, but not so spartan so as not to be fun.
  • pomp means “pompous” and we have had a bit of fun with this.

Structure challenges

The whole agreement needs to have a nested code/subroutine structure. The labels will help address parts. It will be more rigorously nested than the numbering schema of a word doc. The preliminary, interpretation, definitions and overriding principles by which all rights and obligations are construed are the outermost layer. Any nested layer inherits all the outer conditions and terms. Deal with carve-outs and carve ins by "undoing" prevailing conditions. So conditions are "on" or "off". As each proposition has an address label and is an object in the system, this is manageable.

To do

Devise a proposition labelling taxonomy, that can neatly (and predictably) cover: proposition type, agreement type, location and clause reference==Speculation== The rest of this article is a hastily-drawn sketch. It may provide food for thought, and may just be nonsense.

Create (or select) a standard proposition

Select a standard proposition. A “definition” can be represented as:

definition [

label ISDA 2002 1(c)2 def
term Agreement
operator means
scope Master Agreement
definition Master Agreement and [howmany: all] Confirmations.]

Standard proposition templates will be prefaced with a “c-” and you can find a complete list of the formats here:

Canonical propositional forms: Completed propositions:

Why are there t-versions and c-versions of each standard proposition?

You call templates using the “c-” templates. These designate:

(a) what type of standard proposition it is (is it a right, obligation definition, condition precedent, etc): you do this by the “c-type” template —“c” for “call” — you select (e.g. “c-obligation”)
(b) where to find the static data inputs to populate this particular proposition — this will be a taxonomised address for a particular agreement (e.g. “ISDA 2002 2(a)(iii)”). This is where the “t-” templates come in handy: you need to put your proposition variables into a followable, but still fairly convoluted code environment, which you can access by “{{subst:}}ing” the relevant “t-type” template — “t” for “template standard proposition” — and just dropping the variables into the relevant spaces.
(c) what format to output the proposition. For example “pr” will output it as in JCML[2]; “se” will out put as minimalistic semantic English.

The idea is to take an existing template standard proposition and “{{subst:}}” it into a new structure at the correctly taxonomised address, and then populate it. If there isn’t an existing standard proposition to fit, create a new one — but try to avoid this: the name of the game is to have as few “canonical” propositions as possible.

The form of template standard proposition should be:


Name: t-[NAME]<noinclude>{{c|Template propositions}}</noinclude>
Content:
label: <section begin=label/>{{PAGENAME}}<section end=label/>. <br>
{VAR1}: <section begin={VAR1}/> <section end={VAR1}/>. <br>
{VAR2}: <section begin={VAR2}/> <section end={VAR2}/>. <br>
{VAR3}: <section begin={VAR3}/> <section end={VAR3}/>.

Where:

  • Change [NAME] and {VAR1}, {VAR2} and {VAR3} to suit your proposition. Note ALL ARE CASE SENSITIVE. Suggest using only lowercase. Bear in mind the command calling the template also has to be case-correct.
  • “Label” above is fixed text and will help in correctly taxonomising. Don’t change this. Also leave <noinclude>{{c|Template propositions}}</noinclude> as is — this adds the template to the correct category and helps you to find it later.

The form of template call — this simply extracts the relevant data from the taxonomised address, but doesn’t do anything with it (the “format” parameter designates that), is as follows:


{{{{{format}}} [NAME]
|label={{{template}}}
|{VAR1}={{#lst:template:{{{template}}} [name]|{VAR1}}}
|{VAR2}={{#lst:template:{{{template}}} [name]|{VAR2}}}
|{VAR3}={{#lst:template:{{{template}}} [name]|{VAR3}}}
}}<noinclude>{{c|Containers}}</noinclude>

Create a corresponding proposition in your agreement schema

You should have an agreement schema (a structured skeleton of the agreement in question. This has a unique taxonomised template name following this format: [Code] [Agreement] [Edition Year] [Clause reference]. For example, Section 1(a) of the 2002 ISDA is {{Code 2002 ISDA 1(a)}}

Create the new template (e.g. {{Code 2002 ISDA 1(a)}}) and call the template proposition using the “c-” template operator. For example, to: if you want to put an “application” operator in {{Code ISDA 2002 1(a)}} template, insert: {{c-application|ISDA 2002 1(a)1}} there. Note the 1: this is to distinguish between different instances of “application” that appear in clause 1(a), so not necessary if only one, but good practice.

If there is not an existing container, this should prompt you for a bunch of inputs which are not there yet (eg {{{label}}}, {{{action}}} etc).

Render

You choose your rendering by the parameter “format” in the “c-” template.

  • pr means “proposition”: this is the inputs into the proposition listed as they are.
  • se means “semantic”: This is the inputs into the proposition constructed into minimal English
  • std means “standard” legal English: so idiomatic, but not legalese, but not so spartan so as not to be fun.
  • pomp means “pompous” and we have had a bit of fun with this.

Structure challenges

The whole agreement needs to have a nested code/subroutine structure. The labels will help address parts. It will be more rigorously nested than the numbering schema of a word doc. The preliminary, interpretation, definitions and overriding principles by which all rights and obligations are construed are the outermost layer. Any nested layer inherits all the outer conditions and terms. Deal with carve-outs and carve ins by "undoing" prevailing conditions. So conditions are "on" or "off". As each proposition has an address label and is an object in the system, this is manageable.

To do

Devise a proposition labelling taxonomy, that can neatly (and predictably) cover: proposition type, agreement type, location and clause reference

  1. Jolly Contrarian Markup Languange of course.
  2. Jolly Contrarian Markup Languange of course.