configuration/constants/concept.constants.ts

configuration/constants/concept.constants.ts is a file in GovLab Context. 132 lines of code and 15 definitions.

import type { Concept } from "#types/concept.types";

const AXIS = "axis";
const DIMENSION = "dimension";
const LENS = "lens";
const MATH_DOMAIN = "math-domain";
const MATH_TYPE = "math-type";
const MODE = "mode";
const PATTERN_TYPE = "pattern-type";
const REPRESENTATION = "representation";
const SUBSTRATE_NODE = "substrate-node";
const UNIVERSAL_AXIS = "universal-axis";

const reason = function reason(kind: string, id: string): string {
    return `reasoning:${kind}:${id}`;
};

const principle = function principle(id: string): string {
    return `architecture:${id}`;
};

const roles = function roles(id: string, kinds: readonly string[]): readonly string[] {
    return kinds.map((kind) => reason(kind, id));
};

export const CONCEPTS: readonly Concept[] = [
    { home: reason(DIMENSION, "structure"), id: "structure", members: roles("structure", [LENS, SUBSTRATE_NODE]) },
    { home: reason(DIMENSION, "time"), id: "time", members: roles("time", [LENS]) },
    { home: reason(DIMENSION, "space"), id: "space", members: roles("space", [LENS]) },
    { home: reason(DIMENSION, "relation"), id: "relation", members: roles("relation", [LENS, SUBSTRATE_NODE]) },
    { home: reason(DIMENSION, "behavior"), id: "behavior", members: roles("behavior", [LENS]) },
    { home: reason(DIMENSION, "function"), id: "function", members: roles("function", [LENS, REPRESENTATION]) },
    { home: reason(DIMENSION, "meaning"), id: "meaning", members: roles("meaning", [LENS]) },
    { home: reason(DIMENSION, "cause"), id: "cause", members: roles("cause", [LENS]) },
    { home: reason(DIMENSION, "change"), id: "change", members: roles("change", [LENS]) },
    { home: reason(MODE, "prediction"), id: "prediction", members: roles("prediction", [LENS]) },
    { home: reason(SUBSTRATE_NODE, "transformation"), id: "transformation", members: roles("transformation", [LENS]) },
    {
        home: reason(SUBSTRATE_NODE, "invariant"),
        id: "invariant",
        members: [...roles("invariant", [LENS]), principle("invariant")],
    },
    { home: reason(SUBSTRATE_NODE, "existence"), id: "existence", members: roles("existence", [UNIVERSAL_AXIS]) },
    { home: reason(SUBSTRATE_NODE, "information"), id: "information", members: roles("information", [PATTERN_TYPE]) },
    { home: reason(MATH_TYPE, "optimization"), id: "optimization", members: roles("optimization", [LENS, MODE]) },
    { home: reason(MODE, "formalization"), id: "formalization", members: roles("formalization", [AXIS]) },
    { home: reason(MODE, "abstraction"), id: "abstraction", members: [principle("abstraction")] },
    { home: reason(MODE, "reflection"), id: "reflection", members: [principle("reflection")] },
    { home: reason(AXIS, "verification"), id: "verification", members: [principle("verification")] },
    {
        home: reason(MATH_DOMAIN, "probability"),
        id: "probability",
        members: [
            ...roles("probability", [DIMENSION, MATH_TYPE, PATTERN_TYPE, REPRESENTATION]),
            reason(SUBSTRATE_NODE, "uncertainty"),
        ],
    },
    {
        home: reason(MATH_DOMAIN, "algebra"),
        id: "algebra",
        members: roles("algebra", [MATH_TYPE, PATTERN_TYPE, REPRESENTATION]),
    },
    {
        home: reason(MATH_DOMAIN, "geometry"),
        id: "geometry",
        members: roles("geometry", [PATTERN_TYPE, REPRESENTATION]),
    },
    {
        home: reason(MATH_DOMAIN, "topology"),
        id: "topology",
        members: roles("topology", [MATH_TYPE, PATTERN_TYPE, REPRESENTATION]),
    },
    {
        home: reason(MATH_DOMAIN, "logic"),
        id: "logic",
        members: roles("logic", [MATH_TYPE, PATTERN_TYPE, REPRESENTATION]),
    },
    { home: reason(MATH_DOMAIN, "number"), id: "number", members: roles("number", [PATTERN_TYPE, REPRESENTATION]) },
    {
        home: reason(MATH_DOMAIN, "combinatorics"),
        id: "combinatorics",
        members: roles("combinatorics", [PATTERN_TYPE]),
    },
    {
        home: reason(MATH_DOMAIN, "computation"),
        id: "computation",
        members: roles("computation", [MATH_TYPE, PATTERN_TYPE, REPRESENTATION]),
    },
    {
        home: reason(MATH_DOMAIN, "category-theory"),
        id: "category-theory",
        members: roles("category-theory", [PATTERN_TYPE, REPRESENTATION]),
    },
    {
        home: reason(MATH_DOMAIN, "information-theory"),
        id: "information-theory",
        members: roles("information-theory", [MATH_TYPE, REPRESENTATION]),
    },
    {
        home: reason(MATH_TYPE, "dynamical-systems"),
        id: "dynamical-systems",
        members: roles("dynamical-systems", [PATTERN_TYPE, REPRESENTATION]),
    },
    { home: reason(MATH_TYPE, "graph"), id: "graph", members: roles("graph", [REPRESENTATION]) },
    { home: reason(MATH_DOMAIN, "set-theory"), id: "set-theory", members: roles("set-theory", [MATH_TYPE]) },
    { home: reason(MATH_DOMAIN, "analysis"), id: "analysis", members: roles("analysis", [MATH_TYPE]) },
];

export const VARIANTS: ReadonlyMap<string, string> = new Map([
    ["algebraic", "algebra"],
    ["behaviour", "behavior"],
    ["behavioural", "behavior"],
    ["categorical", "category-theory"],
    ["causal", "cause"],
    ["combinatorial", "combinatorics"],
    ["computational", "computation"],
    ["dynamical", "dynamical-systems"],
    ["evolutionary", "change"],
    ["formalisation", "formalization"],
    ["functional", "function"],
    ["generalisation", "generalization"],
    ["geometric", "geometry"],
    ["graphical", "graph"],
    ["information-theoretic", "information-theory"],
    ["invariants", "invariant"],
    ["logical", "logic"],
    ["numerical", "number"],
    ["optimisation", "optimization"],
    ["predictive", "prediction"],
    ["probabilistic", "probability"],
    ["relational", "relation"],
    ["semantic", "meaning"],
    ["spatial", "space"],
    ["structural", "structure"],
    ["temporal", "time"],
    ["topological", "topology"],
    ["transformational", "transformation"],
]);