Here we provide a system of rules for parsing language systematically:
Expanded logic system operators:
=> rightwise implication
<= leftwise implication
= bidirectional implication
: inclusion declaration
| where restriction
; statement terminator (or unescaped newline)
{ } non-ordered set
< > local abstraction wildcard
[ ] optional element(s)
( ) ordered set
~ exclusion, contra-inclusion, not-ish
! context delimiter
!!! context absolute reference (eg. !!!url/to/file!in-file-context!symbol)
Helpful additions:
^| abstract all symbols on line # (| PP <= Prep NP) => (<|PP> <= <|Prep> <|NP>)
^!!!.*! Set subsequent default context
+to combine concepts {red,dog} <= red+dog # a red dog
-to remove or exception from a concept {~green,tree} <= tree-green # like a tree but not green
a|b <= c is equivalent to a:b <= c # the where becomes in at top level of implication
# allow bidirectional implication to be used for declaration
# trees|many = forest
/.*/ regex pattern match in context
“.*” exact pattern match in context
A # isolation indicates a comment
Simple example prototypes:
Symbolic implication: a b => c # green trees imply a forest
Property declaration: a:b # trees are green
Property restriction: a|b => c # trees that are green imply life
Abstraction examples:
Wildcard: <a>|b => <a>:c # trees that are green are trees that are living
Some example rules of English grammar:
| S <= NP [Aux] VP
| NP <= [Art] N [PP]
| VP <= V [{NP,S}]
| PP <= Prep NP
| NP <= [Poss] N
| Poss <= NP Poss-Affix
Taking just:
| S <= NP [Aux] VP
This is more truly represented by the expanded form (for the first):
<>:S <= <>|NP [<>|Aux] <>|VP
Or simplified with implied wildcards:
:S <= |NP [|Aux] |VP
A language compiler will be built along these lines to allow plain language disambiguation to perform the complete metadata function.
More will come.