@fmfi-uk-1-ain-412/structure-explorer 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (52) hide show
  1. package/README.md +54 -0
  2. package/dist/App.d.ts +2 -0
  3. package/dist/AppComponent.d.ts +18 -0
  4. package/dist/__tests__/Formula.test.d.ts +1 -0
  5. package/dist/app/hooks.d.ts +4 -0
  6. package/dist/app/store.d.ts +16 -0
  7. package/dist/components_helper/ChoiceBubble.d.ts +8 -0
  8. package/dist/components_helper/ErrorFeedback.d.ts +7 -0
  9. package/dist/components_helper/InputGroupTitle.d.ts +14 -0
  10. package/dist/components_helper/MessageBubble.d.ts +13 -0
  11. package/dist/components_helper/SelectBubble.d.ts +10 -0
  12. package/dist/components_helper/TooltipButton.d.ts +6 -0
  13. package/dist/features/formulas/FormulaCard.d.ts +1 -0
  14. package/dist/features/formulas/FormulaComponent.d.ts +7 -0
  15. package/dist/features/formulas/formulasSlice.d.ts +12373 -0
  16. package/dist/features/game/GameComponent.d.ts +8 -0
  17. package/dist/features/game/GameControls.d.ts +5 -0
  18. package/dist/features/game/GameHistory.d.ts +5 -0
  19. package/dist/features/import/importThunk.d.ts +2 -0
  20. package/dist/features/language/LanguageComponent.d.ts +1 -0
  21. package/dist/features/language/languageSlice.d.ts +588 -0
  22. package/dist/features/structure/InterpretationInput.d.ts +14 -0
  23. package/dist/features/structure/StructureComponent.d.ts +1 -0
  24. package/dist/features/structure/structureSlice.d.ts +886 -0
  25. package/dist/features/variables/VariablesComponent.d.ts +1 -0
  26. package/dist/features/variables/variablesSlice.d.ts +719 -0
  27. package/dist/index.d.ts +1 -0
  28. package/dist/logicContext.d.ts +27 -0
  29. package/dist/main.d.ts +6 -0
  30. package/dist/model/Expression.d.ts +8 -0
  31. package/dist/model/Language.d.ts +32 -0
  32. package/dist/model/Structure.d.ts +19 -0
  33. package/dist/model/formula/Formula.Conjunction.d.ts +30 -0
  34. package/dist/model/formula/Formula.Disjunction.d.ts +30 -0
  35. package/dist/model/formula/Formula.EqualityAtom.d.ts +36 -0
  36. package/dist/model/formula/Formula.Equivalence.d.ts +35 -0
  37. package/dist/model/formula/Formula.ExistentialQuant.d.ts +29 -0
  38. package/dist/model/formula/Formula.Implication.d.ts +35 -0
  39. package/dist/model/formula/Formula.Negation.d.ts +35 -0
  40. package/dist/model/formula/Formula.PredicateAtom.d.ts +37 -0
  41. package/dist/model/formula/Formula.UniversalQuant.d.ts +29 -0
  42. package/dist/model/formula/Formula.d.ts +37 -0
  43. package/dist/model/formula/QuantifiedFormula.d.ts +18 -0
  44. package/dist/model/term/Term.Constant.d.ts +32 -0
  45. package/dist/model/term/Term.FunctionTerm.d.ts +34 -0
  46. package/dist/model/term/Term.Variable.d.ts +33 -0
  47. package/dist/model/term/Term.d.ts +15 -0
  48. package/dist/structure-explorer.css +5 -0
  49. package/dist/structure-explorer.es.js +25155 -0
  50. package/dist/structure-explorer.umd.js +920 -0
  51. package/dist/vite.svg +1 -0
  52. package/package.json +55 -0
@@ -0,0 +1 @@
1
+ export { default } from './AppComponent';
@@ -0,0 +1,27 @@
1
+ import { default as React } from 'react';
2
+ import { SymbolWithArity } from '@fmfi-uk-1-ain-412/js-fol-parser';
3
+ export interface Formula {
4
+ name: string;
5
+ formula: string;
6
+ }
7
+ export interface LogicContext {
8
+ constants: Array<string>;
9
+ predicates: Array<SymbolWithArity>;
10
+ functions: Array<SymbolWithArity>;
11
+ formulas: Array<Formula>;
12
+ axioms: Array<Formula>;
13
+ theorems: Array<Formula>;
14
+ getFormula: (name: string) => {
15
+ type: string;
16
+ formula: string;
17
+ } | undefined;
18
+ }
19
+ export interface CellContext extends LogicContext {
20
+ isConstant: (symbol: string) => boolean;
21
+ isPredicate: (symbol: string) => boolean;
22
+ isFunction: (symbol: string) => boolean;
23
+ isVariable: (symbol: string) => boolean;
24
+ symbolExits: (symbol: string) => boolean;
25
+ symbolArity: (symbol: string) => number | undefined;
26
+ }
27
+ export declare const LogicContext: React.Context<CellContext | undefined>;
package/dist/main.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ import { AppComponent, prepare } from '../src/AppComponent';
2
+ declare const _default: {
3
+ AppComponent: typeof AppComponent;
4
+ prepare: typeof prepare;
5
+ };
6
+ export default _default;
@@ -0,0 +1,8 @@
1
+ import { Symbol } from './Language';
2
+ import { DomainElement, Structure } from './Structure';
3
+ declare abstract class Expression {
4
+ abstract toString(): string;
5
+ abstract eval(structure: Structure, e: Map<Symbol, DomainElement>): DomainElement | boolean;
6
+ abstract getVariables(): Set<Symbol>;
7
+ }
8
+ export default Expression;
@@ -0,0 +1,32 @@
1
+ import { Language as ParserLanguage } from '@fmfi-uk-1-ain-412/js-fol-parser';
2
+ import { default as Term } from './term/Term';
3
+ export type Symbol = string;
4
+ export declare class Language {
5
+ constants: Set<Symbol>;
6
+ predicates: Map<Symbol, number>;
7
+ functions: Map<Symbol, number>;
8
+ constructor(constants: Set<Symbol>, predicates: Map<Symbol, number>, functions: Map<Symbol, number>);
9
+ /**
10
+ *
11
+ * These functions are temporarly here until the grammar changes
12
+ *
13
+ *
14
+ */
15
+ getParserLanguage(): ParserLanguage;
16
+ checkFunctionArity(symbol: string, args: Term[], ee: {
17
+ expected: (arg0: string) => void;
18
+ }): void;
19
+ checkPredicateArity(symbol: string, args: Term[], ee: {
20
+ expected: (arg0: string) => void;
21
+ }): void;
22
+ hasConstant(constantName: string): boolean;
23
+ hasPredicate(predicateName: string): boolean;
24
+ hasFunction(functionName: string): boolean;
25
+ /**
26
+ * Return arity of the predicate
27
+ * @param {string} predicateName
28
+ * @return {int} arity of the predicate
29
+ */
30
+ getPredicate(predicateName: string): number;
31
+ }
32
+ export default Language;
@@ -0,0 +1,19 @@
1
+ import { Symbol, Language } from './Language';
2
+ export type DomainElement = string;
3
+ export type Valuation = Map<Symbol, DomainElement>;
4
+ export declare class Structure {
5
+ language: Language;
6
+ domain: Set<DomainElement>;
7
+ iC: Map<Symbol, DomainElement>;
8
+ iP: Map<Symbol, Set<DomainElement[]>>;
9
+ iF: Map<Symbol, Map<DomainElement[], DomainElement>>;
10
+ /**
11
+ *
12
+ * @param {Language} language
13
+ */
14
+ constructor(language: Language, domain: Set<DomainElement>, iC: Map<Symbol, DomainElement>, iP: Map<Symbol, Set<DomainElement[]>>, iF: Map<Symbol, Map<DomainElement[], DomainElement>>);
15
+ iPHas(symbol: Symbol, tuple: DomainElement[]): boolean;
16
+ iFHas(symbol: Symbol, tuple: DomainElement[]): boolean;
17
+ iFGet(symbol: Symbol, tuple: DomainElement[]): DomainElement | undefined;
18
+ }
19
+ export default Structure;
@@ -0,0 +1,30 @@
1
+ import { default as Structure, Valuation } from '../Structure';
2
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
3
+ /**
4
+ * Represent conjunction
5
+ * @author Milan Cifra
6
+ * @author Jozef Filip
7
+ * @class
8
+ * @extends Formula
9
+ */
10
+ declare class Conjunction extends Formula {
11
+ subLeft: Formula;
12
+ subRight: Formula;
13
+ /**
14
+ *
15
+ * @param {Formula} subLeft
16
+ * @param {Formula} subRight
17
+ */
18
+ constructor(subLeft: Formula, subRight: Formula);
19
+ /**
20
+ *
21
+ * @param {Structure} structure
22
+ * @param {Map} e variables valuation
23
+ * @return {boolean}
24
+ */
25
+ eval(structure: Structure, e: Valuation): boolean;
26
+ getSubFormulas(): Formula[];
27
+ getSignedType(sign: boolean): SignedFormulaType;
28
+ getSignedSubFormulas(sign: boolean): SignedFormula[];
29
+ }
30
+ export default Conjunction;
@@ -0,0 +1,30 @@
1
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
2
+ import { default as Structure, Valuation } from '../Structure';
3
+ /**
4
+ * Represent disjunction
5
+ * @author Milan Cifra
6
+ * @author Jozef Filip
7
+ * @class
8
+ * @extends Formula
9
+ */
10
+ declare class Disjunction extends Formula {
11
+ subLeft: Formula;
12
+ subRight: Formula;
13
+ /**
14
+ *
15
+ * @param {Formula} subLeft
16
+ * @param {Formula} subRight
17
+ */
18
+ constructor(subLeft: Formula, subRight: Formula);
19
+ /**
20
+ *
21
+ * @param {Structure} structure
22
+ * @param {Map} e
23
+ * @return {boolean}
24
+ */
25
+ eval(structure: Structure, e: Valuation): boolean;
26
+ getSubFormulas(): Formula[];
27
+ getSignedType(sign: boolean): SignedFormulaType;
28
+ getSignedSubFormulas(sign: boolean): SignedFormula[];
29
+ }
30
+ export default Disjunction;
@@ -0,0 +1,36 @@
1
+ import { default as Structure, Valuation } from '../Structure';
2
+ import { default as Term } from '../term/Term';
3
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
4
+ /**
5
+ * Represent equality symbol
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Formula
10
+ */
11
+ declare class EqualityAtom extends Formula {
12
+ subLeft: Term;
13
+ subRight: Term;
14
+ /**
15
+ *
16
+ * @param {Term} subLeft
17
+ * @param {Term} subRight
18
+ */
19
+ constructor(subLeft: Term, subRight: Term);
20
+ /**
21
+ *
22
+ * @param {Structure} structure
23
+ * @param {Map} e
24
+ * @return {boolean}
25
+ */
26
+ eval(structure: Structure, e: Valuation): boolean;
27
+ /**
28
+ *
29
+ * @returns {string}
30
+ */
31
+ toString(): string;
32
+ getSubFormulas(): never[];
33
+ getSignedType(_sign: boolean): SignedFormulaType;
34
+ getSignedSubFormulas(_sign: boolean): SignedFormula[];
35
+ }
36
+ export default EqualityAtom;
@@ -0,0 +1,35 @@
1
+ import { default as Structure, Valuation } from '../Structure';
2
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
3
+ /**
4
+ * Represent equality symbol
5
+ * @author Richard Toth
6
+ * @author Jozef Filip
7
+ * @class
8
+ * @extends Formula
9
+ */
10
+ declare class Equivalence extends Formula {
11
+ subLeft: Formula;
12
+ subRight: Formula;
13
+ /**
14
+ *
15
+ * @param {Formula} subLeft
16
+ * @param {Formula} subRight
17
+ */
18
+ constructor(subLeft: Formula, subRight: Formula);
19
+ /**
20
+ *
21
+ * @param {Structure} structure
22
+ * @param {Map} e
23
+ * @return {boolean}
24
+ */
25
+ eval(structure: Structure, e: Valuation): boolean;
26
+ /**
27
+ *
28
+ * @returns {string}
29
+ */
30
+ toString(): string;
31
+ getSubFormulas(): Formula[];
32
+ getSignedType(sign: boolean): SignedFormulaType;
33
+ getSignedSubFormulas(sign: boolean): SignedFormula[];
34
+ }
35
+ export default Equivalence;
@@ -0,0 +1,29 @@
1
+ import { default as Structure, Valuation } from '../Structure';
2
+ import { default as Formula, SignedFormulaType } from './Formula';
3
+ import { default as QuantifiedFormula } from './QuantifiedFormula';
4
+ /**
5
+ * Represent existential quantificator
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Formula
10
+ */
11
+ declare class ExistentialQuant extends QuantifiedFormula {
12
+ variableName: string;
13
+ subFormula: Formula;
14
+ /**
15
+ *
16
+ * @param {string} variableName
17
+ * @param {Formula} subFormula
18
+ */
19
+ constructor(variableName: string, subFormula: Formula);
20
+ /**
21
+ *
22
+ * @param {Structure} structure
23
+ * @param {Map} e
24
+ * @return {boolean}
25
+ */
26
+ eval(structure: Structure, e: Valuation): boolean;
27
+ getSignedType(sign: boolean): SignedFormulaType;
28
+ }
29
+ export default ExistentialQuant;
@@ -0,0 +1,35 @@
1
+ import { default as Structure, Valuation } from '../Structure';
2
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
3
+ /**
4
+ * Represent implication
5
+ * @author Milan Cifra
6
+ * @author Jozef Filip
7
+ * @class
8
+ * @extends Formula
9
+ */
10
+ declare class Implication extends Formula {
11
+ subLeft: Formula;
12
+ subRight: Formula;
13
+ /**
14
+ *
15
+ * @param {Formula} subLeft
16
+ * @param {Formula} subRight
17
+ */
18
+ constructor(subLeft: Formula, subRight: Formula);
19
+ /**
20
+ *
21
+ * @param {Structure} structure
22
+ * @param {Map} e
23
+ * @return {boolean}
24
+ */
25
+ eval(structure: Structure, e: Valuation): boolean;
26
+ /**
27
+ *
28
+ * @returns {string}
29
+ */
30
+ toString(): string;
31
+ getSubFormulas(): Formula[];
32
+ getSignedType(sign: boolean): SignedFormulaType;
33
+ getSignedSubFormulas(sign: boolean): SignedFormula[];
34
+ }
35
+ export default Implication;
@@ -0,0 +1,35 @@
1
+ import { default as Structure, Valuation } from '../Structure';
2
+ import { Symbol } from '../Language';
3
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
4
+ /**
5
+ * Represent negation
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Formula
10
+ */
11
+ declare class Negation extends Formula {
12
+ subFormula: Formula;
13
+ /**
14
+ *
15
+ * @param {Formula} subFormula
16
+ */
17
+ constructor(subFormula: Formula);
18
+ /**
19
+ *
20
+ * @param {Structure} structure
21
+ * @param {Map} e
22
+ * @return {boolean}
23
+ */
24
+ eval(structure: Structure, e: Valuation): boolean;
25
+ /**
26
+ *
27
+ * @returns {string}
28
+ */
29
+ toString(): string;
30
+ getSubFormulas(): Formula[];
31
+ getVariables(): Set<Symbol>;
32
+ getSignedType(_: boolean): SignedFormulaType;
33
+ getSignedSubFormulas(sign: boolean): SignedFormula[];
34
+ }
35
+ export default Negation;
@@ -0,0 +1,37 @@
1
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
2
+ import { default as Term } from '../term/Term';
3
+ import { default as Structure, Valuation } from '../Structure';
4
+ /**
5
+ * Represent predicate symbol
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Formula
10
+ */
11
+ declare class PredicateAtom extends Formula {
12
+ name: string;
13
+ terms: Term[];
14
+ /**
15
+ *
16
+ * @param {string} name
17
+ * @param {Term[]} terms
18
+ */
19
+ constructor(name: string, terms?: Term[]);
20
+ depth(): number;
21
+ /**
22
+ *
23
+ * @param {Structure} structure
24
+ * @param {Map} e
25
+ * @return {boolean}
26
+ */
27
+ eval(structure: Structure, e: Valuation): boolean;
28
+ /**
29
+ *
30
+ * @returns {string}
31
+ */
32
+ toString(): string;
33
+ getSubFormulas(): Formula[];
34
+ getSignedType(_: boolean): SignedFormulaType;
35
+ getSignedSubFormulas(_: boolean): SignedFormula[];
36
+ }
37
+ export default PredicateAtom;
@@ -0,0 +1,29 @@
1
+ import { default as Structure, Valuation } from '../Structure';
2
+ import { default as Formula, SignedFormulaType } from './Formula';
3
+ import { default as QuantifiedFormula } from './QuantifiedFormula';
4
+ /**
5
+ * Represent universal quantificator
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Formula
10
+ */
11
+ declare class UniversalQuant extends QuantifiedFormula {
12
+ variableName: string;
13
+ subFormula: Formula;
14
+ /**
15
+ *
16
+ * @param {string} variableName
17
+ * @param {Formula} subFormula
18
+ */
19
+ constructor(variableName: string, subFormula: Formula);
20
+ /**
21
+ *
22
+ * @param {Structure} structure
23
+ * @param {Map} e
24
+ * @return {boolean}
25
+ */
26
+ eval(structure: Structure, e: Valuation): boolean;
27
+ getSignedType(sign: boolean): SignedFormulaType;
28
+ }
29
+ export default UniversalQuant;
@@ -0,0 +1,37 @@
1
+ import { default as Expression } from '../Expression';
2
+ import { Symbol } from '../Language';
3
+ import { Structure, Valuation } from '../Structure';
4
+ export declare enum SignedFormulaType {
5
+ ALPHA = "alpha",
6
+ BETA = "beta",
7
+ GAMMA = "gamma",
8
+ DELTA = "delta"
9
+ }
10
+ export type SignedFormula = {
11
+ sign: boolean;
12
+ formula: Formula;
13
+ };
14
+ /**
15
+ * Represent simple formula
16
+ * @author Milan Cifra
17
+ * @author Jozef Filip
18
+ * @class
19
+ * @abstract
20
+ * @extends Expression
21
+ */
22
+ declare abstract class Formula extends Expression {
23
+ protected subFormulas: Formula[];
24
+ protected connective: string;
25
+ constructor(subFormulas: Formula[], connective: string);
26
+ getSubFormulas(): Formula[];
27
+ toString(): string;
28
+ gameDepth(sign: boolean): number;
29
+ signedFormulaToString(sign: boolean): string;
30
+ depth(): number;
31
+ winningSubformulas(sign: boolean, structure: Structure, e: Valuation): SignedFormula[];
32
+ abstract eval(structure: Structure, e: Valuation): boolean;
33
+ getVariables(): Set<Symbol>;
34
+ abstract getSignedType(sign: boolean): SignedFormulaType;
35
+ abstract getSignedSubFormulas(sign: boolean): SignedFormula[];
36
+ }
37
+ export default Formula;
@@ -0,0 +1,18 @@
1
+ import { default as Structure, DomainElement, Valuation } from '../Structure';
2
+ import { default as Formula, SignedFormula, SignedFormulaType } from './Formula';
3
+ import { Symbol } from '../Language';
4
+ declare abstract class QuantifiedFormula extends Formula {
5
+ variableName: string;
6
+ subFormula: Formula;
7
+ connective: string;
8
+ constructor(variableName: string, subFormula: Formula, connective: string);
9
+ abstract eval(structure: Structure, e: Valuation): boolean;
10
+ abstract getSignedType(sign: boolean): SignedFormulaType;
11
+ getSignedSubFormulas(sign: boolean): SignedFormula[];
12
+ toString(): string;
13
+ getVariableName(): string;
14
+ winningElements(sign: boolean, structure: Structure, e: Valuation): DomainElement[];
15
+ getVariables(): Set<Symbol>;
16
+ getSubFormulas(): Formula[];
17
+ }
18
+ export default QuantifiedFormula;
@@ -0,0 +1,32 @@
1
+ import { default as Structure, DomainElement, Valuation } from '../Structure';
2
+ import { Symbol } from '../Language';
3
+ import { default as Term } from './Term';
4
+ /**
5
+ * Constant
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Term
10
+ */
11
+ declare class Constant extends Term {
12
+ name: string;
13
+ /**
14
+ *
15
+ * @param {string} name Name of the constant
16
+ */
17
+ constructor(name: string);
18
+ /**
19
+ * Return intepretation of the constant
20
+ * @param {Structure} structure Structure
21
+ * @param {Map} e variables valuation
22
+ * @return {string} domain item
23
+ */
24
+ eval(structure: Structure, _: Valuation): DomainElement;
25
+ /**
26
+ * Return string representation of constant
27
+ * @returns {string}
28
+ */
29
+ toString(): string;
30
+ getVariables(): Set<Symbol>;
31
+ }
32
+ export default Constant;
@@ -0,0 +1,34 @@
1
+ import { default as Structure, DomainElement, Valuation } from '../Structure';
2
+ import { Symbol } from '../Language';
3
+ import { default as Term } from './Term';
4
+ /**
5
+ * Represent function term
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Term
10
+ */
11
+ declare class FunctionTerm extends Term {
12
+ name: string;
13
+ terms: Term[];
14
+ /**
15
+ *
16
+ * @param {string} name name of the function
17
+ * @param {Term[]} terms parameters of function
18
+ */
19
+ constructor(name: string, terms: Term[]);
20
+ /**
21
+ * Return intepretation of function.
22
+ * @param {Structure} structure
23
+ * @param {Map} e variables valuation
24
+ * @returns {string} domain item
25
+ */
26
+ eval(structure: Structure, e: Valuation): DomainElement;
27
+ /**
28
+ * Return string representation of function term
29
+ * @returns {string}
30
+ */
31
+ toString(): string;
32
+ getVariables(): Set<Symbol>;
33
+ }
34
+ export default FunctionTerm;
@@ -0,0 +1,33 @@
1
+ import { Symbol } from '../Language';
2
+ import { Structure, Valuation, DomainElement } from '../Structure';
3
+ import { default as Term } from './Term';
4
+ /**
5
+ * Variable
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @extends Term
10
+ */
11
+ declare class Variable extends Term {
12
+ name: Symbol;
13
+ /**
14
+ *
15
+ * @param {string} name
16
+ */
17
+ constructor(name: Symbol);
18
+ /**
19
+ * Return intepretation of variable.
20
+ * @param {Structure} structure
21
+ * @param {Map} e variables valuation
22
+ * @return {DomainElement} domain item
23
+ */
24
+ eval(_: Structure, e: Valuation): DomainElement;
25
+ /**
26
+ * Return string representation of variable
27
+ * @returns {DomainElement}
28
+ */
29
+ toString(): DomainElement;
30
+ createCopy(): Variable;
31
+ getVariables(): Set<Symbol>;
32
+ }
33
+ export default Variable;
@@ -0,0 +1,15 @@
1
+ import { default as Expression } from '../Expression';
2
+ import { Symbol } from '../Language';
3
+ import { default as Structure, DomainElement } from '../Structure';
4
+ /**
5
+ * Represent simple term.
6
+ * @author Milan Cifra
7
+ * @author Jozef Filip
8
+ * @class
9
+ * @abstract
10
+ *
11
+ */
12
+ declare abstract class Term extends Expression {
13
+ abstract eval(structure: Structure, e: Map<Symbol, DomainElement>): DomainElement;
14
+ }
15
+ export default Term;