Commit a825c1b4 authored by jfschaefer's avatar jfschaefer
Browse files

work-in-progress: Rework MObj. TODO: Figure out definite noun phrases

parent 17d4de27
...@@ -10,7 +10,7 @@ abstract FGrammar = MCats ** { ...@@ -10,7 +10,7 @@ abstract FGrammar = MCats ** {
fstatement_to_statement : FStatement -> Statement; fstatement_to_statement : FStatement -> Statement;
fcomplexidentifier_to_mathcn : FComplexIdentifier -> MathCN; -- mi ( n ) => $ mi ( cn ) fcomplexidentifier_to_identifer : FComplexIdentifier -> Identifier; -- mi ( n ) => $ mi ( cn ) $
fexpr_fbinrel_fcid_fbinrel_fexpr_to_mathcn : -- introduces one identifier (like in 1 < n < 10) fexpr_fbinrel_fcid_fbinrel_fexpr_to_identifier : -- introduces one identifier (like in 1 < n < 10)
FExpression -> FBinRelation -> FComplexIdentifier -> FBinRelation -> FExpression -> MathCN; FExpression -> FBinRelation -> FComplexIdentifier -> FBinRelation -> FExpression -> Identifier;
} }
...@@ -17,7 +17,8 @@ concrete FGrammarEng of FGrammar = MCatsEng, CatEng ** open ParadigmsEng, ResEng ...@@ -17,7 +17,8 @@ concrete FGrammarEng of FGrammar = MCatsEng, CatEng ** open ParadigmsEng, ResEng
_ => table { _ => table { _ => "???" } } }; _ => table { _ => table { _ => "???" } } };
_ => table { _ => table { _ => table { _ => "???" } } } } }; _ => table { _ => table { _ => table { _ => "???" } } } } };
fcomplexidentifier_to_mathcn fci = mkMathCN_sg ("$" ++ fci ++ "$"); fcomplexidentifier_to_identifer fci = { s = "$" ++ fci ++ "$" }; -- mkMathCN_sg ("$" ++ fci ++ "$");
fexpr_fbinrel_fcid_fbinrel_fexpr_to_mathcn a r1 b r2 c = fexpr_fbinrel_fcid_fbinrel_fexpr_to_identifier a r1 b r2 c =
mkMathCN_sg ("$" ++ (wrap_mml "mrow" (a ++ (wrap_mml "mo" r1) ++ b ++ (wrap_mml "mo" r2) ++ c)) ++ "$"); { s = "$" ++ (wrap_mml "mrow" (a ++ (wrap_mml "mo" r1) ++ b ++ (wrap_mml "mo" r2) ++ c)) ++ "$" };
-- mkMathCN_sg ("$" ++ (wrap_mml "mrow" (a ++ (wrap_mml "mo" r1) ++ b ++ (wrap_mml "mo" r2) ++ c)) ++ "$");
} }
...@@ -24,4 +24,5 @@ abstract MCats = { ...@@ -24,4 +24,5 @@ abstract MCats = {
FStatement; -- statement FStatement; -- statement
MathCN; -- math common noun (e.g. $ mo ( n ) $) MathCN; -- math common noun (e.g. $ mo ( n ) $)
Identifier; -- identifier (more restricted than MathCN)
} }
concrete MCatsEng of MCats = open SyntaxEng in { concrete MCatsEng of MCats = open SyntaxEng, ParamX in {
param
boolean = true | false;
lincat lincat
-- natural language -- natural language
PosNegPol = Pol; PosNegPol = Pol;
DefMObj = NP; DefMObj = NP;
MObj = CN; MObj = {
core : CN; -- core of the declaration (e.g. "continuous function")
suffix : Number => Str; -- suffix (usually starting with a preposition, e.g. "on the real numbers") (number required for relative clauses)
prep1 : Str; -- preposition 1 (e.g. StrSome("from"))
prep2 : Str; -- preposition 2 (e.g. StrSom("to"))
hasp1 : boolean;
hasp2 : boolean;
};
MObjProp = AP; MObjProp = AP;
Statement = Cl; Statement = Cl;
-- statement as sentence or relative sentence ("such that ...") -- statement as sentence or relative sentence ("such that ...")
...@@ -22,4 +33,5 @@ concrete MCatsEng of MCats = open SyntaxEng in { ...@@ -22,4 +33,5 @@ concrete MCatsEng of MCats = open SyntaxEng in {
FStatement = Str; FStatement = Str;
MathCN = CN; MathCN = CN;
Identifier = { s : Str };
} }
...@@ -4,26 +4,27 @@ abstract NGrammar = MCats, Grammar, Extra, ExtraEngAbs ** { ...@@ -4,26 +4,27 @@ abstract NGrammar = MCats, Grammar, Extra, ExtraEngAbs ** {
PosPol : PosNegPol; PosPol : PosNegPol;
NegPol : PosNegPol; NegPol : PosNegPol;
no_identifier : Identifier;
restrict_mobj : MObjProp -> MObj -> MObj; -- "even" -> "integer" -> "even integer" restrict_mobj : MObjProp -> MObj -> MObj; -- "even" -> "integer" -> "even integer"
mobj_such_that : MObj -> StatementFin -> MObj; -- "integer such that ..." mobj_such_that : MObj -> StatementFin -> MObj; -- "integer such that ..."
def_descr_mobj : MObj -> DefMObj; -- "cube" -> "the cube" -- def_descr_mobj : MObj -> DefMObj; -- "cube" -> "the cube"
appo_mobj : MObj -> MathCN -> MObj; -- "an integer $ mi ( n ) $ -- appo_mobj : MObj -> MathCN -> MObj; -- "an integer $ mi ( n ) $
it_pron_defmobj : DefMObj; -- "it" -- it_pron_defmobj : DefMObj; -- "it"
--
exists_statement : MObj -> Statement; -- "integer" -> "there is an integer" exists_statement : MObj -> Identifier -> Statement; -- "integer" -> "there is an integer"
not_exists_statement : MObj -> Statement; -- "integer" -> "there is no integer" not_exists_statement : MObj -> Identifier -> Statement; -- "integer" -> "there is no integer"
eq_defmobj_defmobj : DefMObj -> DefMObj -> Statement; -- "the largest element is the maximum" -- eq_defmobj_defmobj : DefMObj -> DefMObj -> Statement; -- "the largest element is the maximum"
--
state : Statement -> PosNegPol -> StatementFin; state : Statement -> PosNegPol -> StatementFin;
iff_statementfin : StatementFin -> StatementFin -> StatementFin; -- iff_statementfin : StatementFin -> StatementFin -> StatementFin;
and_statementfin : StatementFin -> StatementFin -> StatementFin; -- and_statementfin : StatementFin -> StatementFin -> StatementFin;
or_statementfin : StatementFin -> StatementFin -> StatementFin; -- or_statementfin : StatementFin -> StatementFin -> StatementFin;
def_defmobj_defmobj : DefMObj -> DefMObj -> Statement; -- "the empty set is the set without elements" -- def_defmobj_defmobj : DefMObj -> DefMObj -> Statement; -- "the empty set is the set without elements"
def_mobj_mobjprop : MObj -> MObjProp -> Definition; -- "an integer is called prime" def_mobj_mobjprop : MObj -> Identifier -> MObjProp -> Definition; -- "an integer is called prime"
iff_definition : Definition -> StatementFin -> Definition; -- "... is called ... iff ..." iff_definition : Definition -> StatementFin -> Definition; -- "... is called ... iff ..."
def_appo_is_mobj : MObj -> MathCN -> MObj -> Definition; -- "an alphabet $A$ is a finite set def_mobj_is_mobj : MObj -> MObj -> Definition; -- "an alphabet $A$ is a finite set
utter_statement : StatementFin -> Utterance; -- essentially identity utter_statement : StatementFin -> Utterance; -- essentially identity
utter_definition : Definition -> Utterance; -- essentially identity utter_definition : Definition -> Utterance; -- essentially identity
......
concrete NGrammarEng of NGrammar = MCatsEng, GrammarEng, ExtraEng ** open SyntaxEng, ParadigmsEng in { concrete NGrammarEng of NGrammar = MCatsEng, GrammarEng, ExtraEng ** open SyntaxEng, ParadigmsEng, UtilsEng, ResEng, ParamX in {
oper
call_V2A : V2A = mkV2A (mkV "call" "calls" "called" "called" "calling") noPrep;
lin lin
PosPol = GrammarEng.PPos; PosPol = GrammarEng.PPos;
NegPol = GrammarEng.PNeg; NegPol = GrammarEng.PNeg;
no_identifier = { s = ""};
restrict_mobj prop obj = mkCN prop obj; restrict_mobj prop obj = mobjPrepMObjProp obj prop;
def_descr_mobj obj = mkNP the_Art obj; mobj_such_that obj restr = mobjAddSuffix obj restr.rs;
mobj_such_that obj restr = mkCN obj restr.rs; -- (mkRS pol (mkRCl restr)); -- def_descr_mobj obj = mkNP the_Art obj;
appo_mobj obj mcn = lin CN { s = \\number,case_ => obj.s ! number ! case_ ++ mcn.s ! number ! case_; g = obj.g }; -- appo_mobj obj mcn = lin CN { s = \\number,case_ => obj.s ! number ! case_ ++ mcn.s ! number ! case_; g = obj.g };
it_pron_defmobj = mkNP it_Pron;
exists_statement obj = mkCl obj | ExistsNP (mkNP aSg_Det obj);
not_exists_statement obj = mkCl (mkNP no_Quant obj) | ExistsNP (mkNP no_Quant obj);
eq_defmobj_defmobj a b = mkCl a b;
-- it_pron_defmobj = mkNP it_Pron;
--
exists_statement obj id = mkCl (DetCN aSg_Det (mobjToCN obj id)) | ExistsNP (DetCN aSg_Det (mobjToCN obj id)); -- ExistsNP (mkNP aSg_Det obj);
not_exists_statement obj id = mkCl (DetCN (DetQuant no_Quant NumSg) (mobjToCN obj id)) |
ExistsNP (DetCN (DetQuant no_Quant NumSg) (mobjToCN obj id));
-- eq_defmobj_defmobj a b = mkCl a b;
--
state stmt pol = { s = mkS pol stmt; rs = mkRS pol (mkRCl stmt) }; state stmt pol = { s = mkS pol stmt; rs = mkRS pol (mkRCl stmt) };
iff_statementfin a b = { s = mkS (mkConj "iff") a.s b.s; rs = mkRS (mkConj "iff") a.rs b.rs }; -- iff_statementfin a b = { s = mkS (mkConj "iff") a.s b.s; rs = mkRS (mkConj "iff") a.rs b.rs };
and_statementfin a b = { s = mkS (mkConj "and") a.s b.s; rs = mkRS (mkConj "and") a.rs b.rs }; -- and_statementfin a b = { s = mkS (mkConj "and") a.s b.s; rs = mkRS (mkConj "and") a.rs b.rs };
or_statementfin a b = { s = mkS (mkConj "or") a.s b.s; rs = mkRS (mkConj "or") a.rs b.rs }; -- or_statementfin a b = { s = mkS (mkConj "or") a.s b.s; rs = mkRS (mkConj "or") a.rs b.rs };
--
def_mobj_mobjprop obj prop = mkS (mkCl def_mobj_mobjprop obj id prop = mkS (mkCl
(mkNP aSg_Det obj) (DetCN aSg_Det (mobjToCN obj id)) -- (mkNP aSg_Det (mobjToCN obj))
(PastPartAP (mkVPSlash (mkV2A (mkV "call" "calls" "called" "called" "calling") noPrep) prop))); (PastPartAP (mkVPSlash (mkV2A (mkV "call" "calls" "called" "called" "calling") noPrep) prop)));
-- iff_definition defi condition = lin S { s = "iff" }; -- better solution for this? -- -- iff_definition defi condition = lin S { s = "iff" }; -- better solution for this?
iff_definition defi condition = lin S { s = defi.s ++ "iff" ++ condition.s.s }; -- better solution for this? iff_definition defi condition = lin S { s = defi.s ++ "iff" ++ condition.s.s }; -- better solution for this?
def_defmobj_defmobj a b = mkCl a b; -- def_defmobj_defmobj a b = mkCl a b;
def_appo_is_mobj definiendum representative definiens = def_mobj_is_mobj definiendum definiens =
mkS (mkCl (DetCN {- mkNP is for some reason ambiguous -} mkS (mkCl (DetCN aSg_Det (mobjToCN definiendum)) (mobjToCN definiens));
aSg_Det (appo_mobj definiendum representative)) definiens); -- mkS (mkCl (DetCN {- mkNP is for some reason ambiguous -}
-- aSg_Det (appo_mobj definiendum representative)) definiens);
--
utter_statement s = mkUtt s.s; utter_statement s = mkUtt s.s;
utter_definition s = mkUtt s; utter_definition s = mkUtt s;
--
--
-- copied from ExtendEng.gf -- copied from ExtendEng.gf
PastPartAP vp = { PastPartAP vp = {
s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ vp.ext ; s = \\a => vp.ad ! a ++ vp.ptp ++ vp.p ++ vp.c2 ++ vp.s2 ! a ++ vp.ext ;
......
-- natural language lexicon -- natural language lexicon
abstract NLexicon = MCats, NLexiconMObj ** { abstract NLexicon = MCats, NLexiconMObj, Cat ** {
fun fun
-- integer_MObj : MObj; -- integer_MObj : MObj;
-- set_MObj : MObj; -- set_MObj : MObj;
......
...@@ -3,7 +3,7 @@ concrete NLexiconEng of NLexicon = MCatsEng, NLexiconMObjEng ** open SyntaxEng, ...@@ -3,7 +3,7 @@ concrete NLexiconEng of NLexicon = MCatsEng, NLexiconMObjEng ** open SyntaxEng,
-- integer_MObj = mkCN (mkN "integer"); -- integer_MObj = mkCN (mkN "integer");
-- set_MObj = mkCN (mkN "set"); -- set_MObj = mkCN (mkN "set");
-- alphabet_MObj = mkCN (mkN "alphabet"); -- alphabet_MObj = mkCN (mkN "alphabet");
finite_MObjProp = mkAP (mkA "finite"); finite_MObjProp = mkAP (mkA "finite");
empty_MObjProp = mkAP (mkA "empty"); empty_MObjProp = mkAP (mkA "empty");
even_MObjProp = mkAP (mkA "even"); even_MObjProp = mkAP (mkA "even");
......
...@@ -3,609 +3,615 @@ ...@@ -3,609 +3,615 @@
-- The machine learning algorithm is still under development and more refined and more complete results can be expected. -- The machine learning algorithm is still under development and more refined and more complete results can be expected.
-- Currently all nouns are of type MObj. This shouldn't be the case, as e.g. optimality does not represent a mathematical object. -- Currently all nouns are of type MObj. This shouldn't be the case, as e.g. optimality does not represent a mathematical object.
-- NOTE: IRREGULAR NOUNS ARE NOT HANDLED PROPERLY (consider e.g. "vertex" (pl. "vertices")) -- NOTE: IRREGULAR NOUNS ARE NOT HANDLED PROPERLY (consider e.g. "vertex" (pl. "vertices"))
concrete NLexiconMObjEng of NLexiconMObj = MCatsEng ** open SyntaxEng, ParadigmsEng in { concrete NLexiconMObjEng of NLexiconMObj = MCatsEng ** open SyntaxEng, ParadigmsEng, UtilsEng in {
-- oper
-- mkMObj : N -> MObj = \noun -> let obj : CN = mkCN noun in
-- lin MObj {
-- with_id = lin CN { s = \\number,case_ => obj.s ! number ! case_ ++ mcn.s ! number ! case_; g = obj.g };
-- simple = obj
-- };
lin lin
set_MObj = mkCN (mkN "set"); set_MObj = mkMObj (mkN "set");
function_MObj = mkCN (mkN "function"); function_MObj = mkMObj (mkN "function");
case_MObj = mkCN (mkN "case"); case_MObj = mkMObj (mkN "case");
space_MObj = mkCN (mkN "space"); space_MObj = mkMObj (mkN "space");
form_MObj = mkCN (mkN "form"); form_MObj = mkMObj (mkN "form");
point_MObj = mkCN (mkN "point"); point_MObj = mkMObj (mkN "point");
group_MObj = mkCN (mkN "group"); group_MObj = mkMObj (mkN "group");
result_MObj = mkCN (mkN "result"); result_MObj = mkMObj (mkN "result");
sequence_MObj = mkCN (mkN "sequence"); sequence_MObj = mkMObj (mkN "sequence");
operator_MObj = mkCN (mkN "operator"); operator_MObj = mkMObj (mkN "operator");
map_MObj = mkCN (mkN "map"); map_MObj = mkMObj (mkN "map");
number_MObj = mkCN (mkN "number"); number_MObj = mkMObj (mkN "number");
algebra_MObj = mkCN (mkN "algebra"); algebra_MObj = mkMObj (mkN "algebra");
solution_MObj = mkCN (mkN "solution"); solution_MObj = mkMObj (mkN "solution");
constant_MObj = mkCN (mkN "constant"); constant_MObj = mkMObj (mkN "constant");
vector_MObj = mkCN (mkN "vector"); vector_MObj = mkMObj (mkN "vector");
measure_MObj = mkCN (mkN "measure"); measure_MObj = mkMObj (mkN "measure");
system_MObj = mkCN (mkN "system"); system_MObj = mkMObj (mkN "system");
time_MObj = mkCN (mkN "time"); time_MObj = mkMObj (mkN "time");
matrix_MObj = mkCN (mkN "matrix"); matrix_MObj = mkMObj (mkN "matrix");
metric_MObj = mkCN (mkN "metric"); metric_MObj = mkMObj (mkN "metric");
class_MObj = mkCN (mkN "class"); class_MObj = mkMObj (mkN "class");
product_MObj = mkCN (mkN "product"); product_MObj = mkMObj (mkN "product");
field_MObj = mkCN (mkN "field"); field_MObj = mkMObj (mkN "field");
graph_MObj = mkCN (mkN "graph"); graph_MObj = mkMObj (mkN "graph");
structure_MObj = mkCN (mkN "structure"); structure_MObj = mkMObj (mkN "structure");
element_MObj = mkCN (mkN "element"); element_MObj = mkMObj (mkN "element");
polynomial_MObj = mkCN (mkN "polynomial"); polynomial_MObj = mkMObj (mkN "polynomial");
boundary_MObj = mkCN (mkN "boundary"); boundary_MObj = mkMObj (mkN "boundary");
subset_MObj = mkCN (mkN "subset"); subset_MObj = mkMObj (mkN "subset");
probability_MObj = mkCN (mkN "probability"); probability_MObj = mkMObj (mkN "probability");
manifold_MObj = mkCN (mkN "manifold"); manifold_MObj = mkMObj (mkN "manifold");
state_MObj = mkCN (mkN "state"); state_MObj = mkMObj (mkN "state");
family_MObj = mkCN (mkN "family"); family_MObj = mkMObj (mkN "family");
basis_MObj = mkCN (mkN "basis"); basis_MObj = mkMObj (mkN "basis");
action_MObj = mkCN (mkN "action"); action_MObj = mkMObj (mkN "action");
limit_MObj = mkCN (mkN "limit"); limit_MObj = mkMObj (mkN "limit");
value_MObj = mkCN (mkN "value"); value_MObj = mkMObj (mkN "value");
representation_MObj = mkCN (mkN "representation"); representation_MObj = mkMObj (mkN "representation");
way_MObj = mkCN (mkN "way"); way_MObj = mkMObj (mkN "way");
vertex_MObj = mkCN (mkN "vertex"); vertex_MObj = mkMObj (mkN "vertex");
process_MObj = mkCN (mkN "process"); process_MObj = mkMObj (mkN "process");
norm_MObj = mkCN (mkN "norm"); norm_MObj = mkMObj (mkN "norm");
integer_MObj = mkCN (mkN "integer"); integer_MObj = mkMObj (mkN "integer");
model_MObj = mkCN (mkN "model"); model_MObj = mkMObj (mkN "model");
existence_MObj = mkCN (mkN "existence"); existence_MObj = mkMObj (mkN "existence");
sum_MObj = mkCN (mkN "sum"); sum_MObj = mkMObj (mkN "sum");
term_MObj = mkCN (mkN "term"); term_MObj = mkMObj (mkN "term");
relation_MObj = mkCN (mkN "relation"); relation_MObj = mkMObj (mkN "relation");
integral_MObj = mkCN (mkN "integral"); integral_MObj = mkMObj (mkN "integral");
sense_MObj = mkCN (mkN "sense"); sense_MObj = mkMObj (mkN "sense");
curvature_MObj = mkCN (mkN "curvature"); curvature_MObj = mkMObj (mkN "curvature");
bundle_MObj = mkCN (mkN "bundle"); bundle_MObj = mkMObj (mkN "bundle");
distribution_MObj = mkCN (mkN "distribution"); distribution_MObj = mkMObj (mkN "distribution");
ideal_MObj = mkCN (mkN "ideal"); ideal_MObj = mkMObj (mkN "ideal");
curve_MObj = mkCN (mkN "curve"); curve_MObj = mkMObj (mkN "curve");
pair_MObj = mkCN (mkN "pair"); pair_MObj = mkMObj (mkN "pair");
domain_MObj = mkCN (mkN "domain"); domain_MObj = mkMObj (mkN "domain");
subgroup_MObj = mkCN (mkN "subgroup"); subgroup_MObj = mkMObj (mkN "subgroup");
identity_MObj = mkCN (mkN "identity"); identity_MObj = mkMObj (mkN "identity");
surface_MObj = mkCN (mkN "surface"); surface_MObj = mkMObj (mkN "surface");
edge_MObj = mkCN (mkN "edge"); edge_MObj = mkMObj (mkN "edge");
construction_MObj = mkCN (mkN "construction"); construction_MObj = mkMObj (mkN "construction");
line_MObj = mkCN (mkN "line"); line_MObj = mkMObj (mkN "line");
notation_MObj = mkCN (mkN "notation"); notation_MObj = mkMObj (mkN "notation");
algorithm_MObj = mkCN (mkN "algorithm"); algorithm_MObj = mkMObj (mkN "algorithm");
component_MObj = mkCN (mkN "component"); component_MObj = mkMObj (mkN "component");
extension_MObj = mkCN (mkN "extension"); extension_MObj = mkMObj (mkN "extension");
decomposition_MObj = mkCN (mkN "decomposition"); decomposition_MObj = mkMObj (mkN "decomposition");
subspace_MObj = mkCN (mkN "subspace"); subspace_MObj = mkMObj (mkN "subspace");
isomorphism_MObj = mkCN (mkN "isomorphism"); isomorphism_MObj = mkMObj (mkN "isomorphism");
method_MObj = mkCN (mkN "method"); method_MObj = mkMObj (mkN "method");
index_MObj = mkCN (mkN "index"); index_MObj = mkMObj (mkN "index");
statement_MObj = mkCN (mkN "statement"); statement_MObj = mkMObj (mkN "statement");
choice_MObj = mkCN (mkN "choice"); choice_MObj = mkMObj (mkN "choice");
projection_MObj = mkCN (mkN "projection"); projection_MObj = mkMObj (mkN "projection");
mapping_MObj = mkCN (mkN "mapping"); mapping_MObj = mkMObj (mkN "mapping");
variable_MObj = mkCN (mkN "variable"); variable_MObj = mkMObj (mkN "variable");
distance_MObj = mkCN (mkN "distance"); distance_MObj = mkMObj (mkN "distance");
interval_MObj = mkCN (mkN "interval"); interval_MObj = mkMObj (mkN "interval");
setting_MObj = mkCN (mkN "setting"); setting_MObj = mkMObj (mkN "setting");
parameter_MObj = mkCN (mkN "parameter"); parameter_MObj = mkMObj (mkN "parameter");
series_MObj = mkCN (mkN "series"); series_MObj = mkMObj (mkN "series");
weight_MObj = mkCN (mkN "weight"); weight_MObj = mkMObj (mkN "weight");
path_MObj = mkCN (mkN "path"); path_MObj = mkMObj (mkN "path");
neighborhood_MObj = mkCN (mkN "neighborhood"); neighborhood_MObj = mkMObj (mkN "neighborhood");
density_MObj = mkCN (mkN "density"); density_MObj = mkMObj (mkN "density");
equivalence_MObj = mkCN (mkN "equivalence"); equivalence_MObj = mkMObj (mkN "equivalence");
flow_MObj = mkCN (mkN "flow"); flow_MObj = mkMObj (mkN "flow");
image_MObj = mkCN (mkN "image"); image_MObj = mkMObj (mkN "image");
energy_MObj = mkCN (mkN "energy"); energy_MObj = mkMObj (mkN "energy");
factor_MObj = mkCN (mkN "factor"); factor_MObj = mkMObj (mkN "factor");
contradiction_MObj = mkCN (mkN "contradiction"); contradiction_MObj = mkMObj (mkN "contradiction");
kernel_MObj = mkCN (mkN "kernel"); kernel_MObj = mkMObj (mkN "kernel");
ring_MObj = mkCN (mkN "ring"); ring_MObj = mkMObj (mkN "ring");
tensor_MObj = mkCN (mkN "tensor"); tensor_MObj = mkMObj (mkN "tensor");
connection_MObj = mkCN (mkN "connection"); connection_MObj = mkMObj (mkN "connection");
geodesic_MObj = mkCN (mkN "geodesic"); geodesic_MObj = mkMObj (mkN "geodesic");
consequence_MObj = mkCN (mkN "consequence"); consequence_MObj = mkMObj (mkN "consequence");
restriction_MObj = mkCN (mkN "restriction"); restriction_MObj = mkMObj (mkN "restriction");
lattice_MObj = mkCN (mkN "lattice"); lattice_MObj = mkMObj (mkN "lattice");
inverse_MObj = mkCN (mkN "inverse"); inverse_MObj = mkMObj (mkN "inverse");
intersection_MObj = mkCN (mkN "intersection"); intersection_MObj = mkMObj (mkN "intersection");
partition_MObj = mkCN (mkN "partition"); partition_MObj = mkMObj (mkN "partition");
union_MObj = mkCN (mkN "union"); union_MObj = mkMObj (mkN "union");
plane_MObj = mkCN (mkN "plane"); plane_MObj = mkMObj (mkN "plane");
ball_MObj = mkCN (mkN "ball"); ball_MObj = mkMObj (mkN "ball");
expression_MObj = mkCN (mkN "expression"); expression_MObj = mkMObj (mkN "expression");
orbit_MObj = mkCN (mkN "orbit"); orbit_MObj = mkMObj (mkN "orbit");
tree_MObj = mkCN (mkN "tree"); tree_MObj = mkMObj (mkN "tree");
root_MObj = mkCN (mkN "root"); root_MObj = mkMObj (mkN "root");
derivative_MObj = mkCN (mkN "derivative"); derivative_MObj = mkMObj (mkN "derivative");
hamiltonian_MObj = mkCN (mkN "hamiltonian"); hamiltonian_MObj = mkMObj (mkN "hamiltonian");
entropy_MObj = mkCN (mkN "entropy"); entropy_MObj = mkMObj (mkN "entropy");
approximation_MObj = mkCN (mkN "approximation"); approximation_MObj = mkMObj (mkN "approximation");
semigroup_MObj = mkCN (mkN "semigroup"); semigroup_MObj = mkMObj (mkN "semigroup");
power_MObj = mkCN (mkN "power"); power_MObj = mkMObj (mkN "power");
change_MObj = mkCN (mkN "change"); change_MObj = mkMObj (mkN "change");
quotient_MObj = mkCN (mkN "quotient"); quotient_MObj = mkMObj (mkN "quotient");
embedding_MObj = mkCN (mkN "embedding"); embedding_MObj = mkMObj (mkN "embedding");
base_MObj = mkCN (mkN "base"); base_MObj = mkMObj (mkN "base");
chain_MObj = mkCN (mkN "chain"); chain_MObj = mkMObj (mkN "chain");
transformation_MObj = mkCN (mkN "transformation"); transformation_MObj = mkMObj (mkN "transformation");
cone_MObj = mkCN (mkN "cone"); cone_MObj = mkMObj (mkN "cone");
homomorphism_MObj = mkCN (mkN "homomorphism"); homomorphism_MObj = mkMObj (mkN "homomorphism");
difference_MObj = mkCN (mkN "difference"); difference_MObj = mkMObj (mkN "difference");
expansion_MObj = mkCN (mkN "expansion"); expansion_MObj = mkMObj (mkN "expansion");
symmetry_MObj = mkCN (mkN "symmetry"); symmetry_MObj = mkMObj (mkN "symmetry");
closure_MObj = mkCN (mkN "closure"); closure_MObj = mkMObj (mkN "closure");
eigenvalue_MObj = mkCN (mkN "eigenvalue"); eigenvalue_MObj = mkMObj (mkN "eigenvalue");
potential_MObj = mkCN (mkN "potential"); potential_MObj = mkMObj (mkN "potential");
direction_MObj = mkCN (mkN "direction"); direction_MObj = mkMObj (mkN "direction");
automorphism_MObj = mkCN (mkN "automorphism"); automorphism_MObj = mkMObj (mkN "automorphism");
spectrum_MObj = mkCN (mkN "spectrum"); spectrum_MObj = mkMObj (mkN "spectrum");
variety_MObj = mkCN (mkN "variety"); variety_MObj = mkMObj (mkN "variety");
volume_MObj = mkCN (mkN "volume"); volume_MObj = mkMObj (mkN "volume");
regularity_MObj = mkCN (mkN "regularity"); regularity_MObj = mkMObj (mkN "regularity");
computation_MObj = mkCN (mkN "computation"); computation_MObj = mkMObj (mkN "computation");
rate_MObj = mkCN (mkN "rate"); rate_MObj = mkMObj (mkN "rate");
context_MObj = mkCN (mkN "context"); context_MObj = mkMObj (mkN "context");
collection_MObj = mkCN (mkN "collection"); collection_MObj = mkMObj (mkN "collection");
multiplication_MObj = mkCN (mkN "multiplication"); multiplication_MObj = mkMObj (mkN "multiplication");
minimum_MObj = mkCN (mkN "minimum"); minimum_MObj = mkMObj (mkN "minimum");
word_MObj = mkCN (mkN "word"); word_MObj = mkMObj (mkN "word");
sphere_MObj = mkCN (mkN "sphere"); sphere_MObj = mkMObj (mkN "sphere");
error_MObj = mkCN (mkN "error"); error_MObj = mkMObj (mkN "error");
block_MObj = mkCN (mkN "block"); block_MObj = mkMObj (mkN "block");
permutation_MObj = mkCN (mkN "permutation"); permutation_MObj = mkMObj (mkN "permutation");
situation_MObj = mkCN (mkN "situation"); situation_MObj = mkMObj (mkN "situation");
trace_MObj = mkCN (mkN "trace"); trace_MObj = mkMObj (mkN "trace");
cohomology_MObj = mkCN (mkN "cohomology"); cohomology_MObj = mkMObj (mkN "cohomology");
range_MObj = mkCN (mkN "range"); range_MObj = mkMObj (mkN "range");
morphism_MObj = mkCN (mkN "morphism"); morphism_MObj = mkMObj (mkN "morphism");
position_MObj = mkCN (mkN "position"); position_MObj = mkMObj (mkN "position");
stability_MObj = mkCN (mkN "stability"); stability_MObj = mkMObj (mkN "stability");
category_MObj = mkCN (mkN "category"); category_MObj = mkMObj (mkN "category");
cycle_MObj = mkCN (mkN "cycle"); cycle_MObj = mkMObj (mkN "cycle");
torus_MObj = mkCN (mkN "torus"); torus_MObj = mkMObj (mkN "torus");
subsequence_MObj = mkCN (mkN "subsequence"); subsequence_MObj = mkMObj (mkN "subsequence");
application_MObj = mkCN (mkN "application"); application_MObj = mkMObj (mkN "application");
coefficient_MObj = mkCN (mkN "coefficient"); coefficient_MObj = mkMObj (mkN "coefficient");
origin_MObj = mkCN (mkN "origin"); origin_MObj = mkMObj (mkN "origin");
operation_MObj = mkCN (mkN "operation"); operation_MObj = mkMObj (mkN "operation");
column_MObj = mkCN (mkN "column"); column_MObj = mkMObj (mkN "column");
interior_MObj = mkCN (mkN "interior"); interior_MObj = mkMObj (mkN "interior");
mass_MObj = mkCN (mkN "mass"); mass_MObj = mkMObj (mkN "mass");
subalgebra_MObj = mkCN (mkN "subalgebra"); subalgebra_MObj = mkMObj (mkN "subalgebra");
inclusion_MObj = mkCN (mkN "inclusion"); inclusion_MObj = mkMObj (mkN "inclusion");
covering_MObj = mkCN (mkN "covering"); covering_MObj = mkMObj (mkN "covering");
frame_MObj = mkCN (mkN "frame"); frame_MObj = mkMObj (mkN "frame");
reduction_MObj = mkCN (mkN "reduction"); reduction_MObj = mkMObj (mkN "reduction");
description_MObj = mkCN (mkN "description"); description_MObj = mkMObj (mkN "description");
strategy_MObj = mkCN (mkN "strategy"); strategy_MObj = mkMObj (mkN "strategy");
game_MObj = mkCN (mkN "game"); game_MObj = mkMObj (mkN "game");
circle_MObj = mkCN (mkN "circle"); circle_MObj = mkMObj (mkN "circle");
arc_MObj = mkCN (mkN "arc"); arc_MObj = mkMObj (mkN "arc");
discussion_MObj = mkCN (mkN "discussion"); discussion_MObj = mkMObj (mkN "discussion");
triple_MObj = mkCN (mkN "triple"); triple_MObj = mkMObj (mkN "triple");
complexity_MObj = mkCN (mkN "complexity"); complexity_MObj = mkMObj (mkN "complexity");
evolution_MObj = mkCN (mkN "evolution"); evolution_MObj = mkMObj (mkN "evolution");
diagram_MObj = mkCN (mkN "diagram"); diagram_MObj = mkMObj (mkN "diagram");
composition_MObj = mkCN (mkN "composition"); composition_MObj = mkMObj (mkN "composition");
generalization_MObj = mkCN (mkN "generalization"); generalization_MObj = mkMObj (mkN "generalization");
symbol_MObj = mkCN (mkN "symbol"); symbol_MObj = mkMObj (mkN "symbol");
fiber_MObj = mkCN (mkN "fiber"); fiber_MObj = mkMObj (mkN "fiber");
observation_MObj = mkCN (mkN "observation"); observation_MObj = mkMObj (mkN "observation");
role_MObj = mkCN (mkN "role"); role_MObj = mkMObj (mkN "role");
generator_MObj = mkCN (mkN "generator"); generator_MObj = mkMObj (mkN "generator");
center_MObj = mkCN (mkN "center"); center_MObj = mkMObj (mkN "center");
growth_MObj = mkCN (mkN "growth"); growth_MObj = mkMObj (mkN "growth");
isometry_MObj = mkCN (mkN "isometry"); isometry_MObj = mkMObj (mkN "isometry");
complement_MObj = mkCN (mkN "complement"); complement_MObj = mkMObj (mkN "complement");
combination_MObj = mkCN (mkN "combination"); combination_MObj = mkMObj (mkN "combination");
triangle_MObj = mkCN (mkN "triangle"); triangle_MObj = mkMObj (mkN "triangle");
variation_MObj = mkCN (mkN "variation"); variation_MObj = mkMObj (mkN "variation");
node_MObj = mkCN (mkN "node"); node_MObj = mkMObj (mkN "node");
divisor_MObj = mkCN (mkN "divisor"); divisor_MObj = mkMObj (mkN "divisor");
input_MObj = mkCN (mkN "input"); input_MObj = mkMObj (mkN "input");
scale_MObj = mkCN (mkN "scale"); scale_MObj = mkMObj (mkN "scale");
equilibrium_MObj = mkCN (mkN "equilibrium"); equilibrium_MObj = mkMObj (mkN "equilibrium");
region_MObj = mkCN (mkN "region"); region_MObj = mkMObj (mkN "region");
character_MObj = mkCN (mkN "character"); character_MObj = mkMObj (mkN "character");
characterization_MObj = mkCN (mkN "characterization"); characterization_MObj = mkMObj (mkN "characterization");
moment_MObj = mkCN (mkN "moment"); moment_MObj = mkMObj (mkN "moment");
rest_MObj = mkCN (mkN "rest"); rest_MObj = mkMObj (mkN "rest");
translation_MObj = mkCN (mkN "translation"); translation_MObj = mkMObj (mkN "translation");
sign_MObj = mkCN (mkN "sign"); sign_MObj = mkMObj (mkN "sign");
segment_MObj = mkCN (mkN "segment"); segment_MObj = mkMObj (mkN "segment");
disk_MObj = mkCN (mkN "disk"); disk_MObj = mkMObj (mkN "disk");
link_MObj = mkCN (mkN "link"); link_MObj = mkMObj (mkN "link");
framework_MObj = mkCN (mkN "framework"); framework_MObj = mkMObj (mkN "framework");
concept_MObj = mkCN (mkN "concept"); concept_MObj = mkMObj (mkN "concept");
bracket_MObj = mkCN (mkN "bracket"); bracket_MObj = mkMObj (mkN "bracket");
classification_MObj = mkCN (mkN "classification"); classification_MObj = mkMObj (mkN "classification");
constraint_MObj = mkCN (mkN "constraint"); constraint_MObj = mkMObj (mkN "constraint");