forked from wo/tpg
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_formula.js
74 lines (64 loc) · 2.29 KB
/
test_formula.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
tests = {
parseAxFxandNegate: function() {
var parser = new Parser();
var f = parser.parseFormula('∀xFx');
assertEqual(f.type, 'gamma');
assertEqual(f.variable, 'x');
var f2 = f.negate();
assertEqual(f2.string, '¬∀xFx');
assertEqual(f2.type, 'delta');
},
substitute: function() {
var parser = new Parser();
var f = parser.parseFormula('∀x(Fx → Fy)');
var f2 = f.substitute('x', 'z');
assertEqual(f, f2);
var f2 = f.substitute('y', 'z');
assertEqual(f2.string, '∀x(Fx → Fz)');
assertEqual(f.string, '∀x(Fx → Fy)');
},
substitute2: function() {
var parser = new Parser();
var f = parser.parseFormula('(¬Av∨Bv)');
var f2 = f.substitute('v', 'φ1');
assertEqual(f2.string, '(¬Aφ1 ∨ Bφ1)');
},
substituteComplex: function() {
var parser = new Parser();
var f = parser.parseFormula('H(a,b,g(c,c))');
var f2 = f.substitute('c', ['f','a','b','c'], true);
assertEqual(f, f2);
var f2 = f.substitute('c', ['f','a','b','c']);
assertEqual(f2.string, 'Habg(f(a,b,c),f(a,b,c))');
},
nnf: function() {
var parser = new Parser();
var f = parser.parseFormula('¬∀x(Fx → Fx)').nnf();
assertEqual(f, '∃x(Fx ∧ ¬Fx)');
},
unify: function() {
var parser = new Parser();
var f1 = parser.parseFormula('Ff(a,b)');
var f2 = parser.parseFormula('Fξ1');
var u = Formula.unifyTerms(f1.terms, f2.terms);
assertEqual(u[0], 'ξ1');
assertEqual(u[1].toString(), ['f','a','b']);
},
unify2: function() {
var parser = new Parser();
var f1 = parser.parseFormula('Q(a,g(ξ1,a),f(ξ2))');
var f2 = parser.parseFormula('Q(a,g(f(b),a),ξ1)');
var u = Formula.unifyTerms(f1.terms, f2.terms);
assertEqual(u[0], 'ξ1');
assertEqual(u[1].toString(), ['f','b']);
assertEqual(u[2], 'ξ2');
assertEqual(u[3], 'b');
},
unify3: function() {
var parser = new Parser();
var f1 = parser.parseFormula('pω1');
var f2 = parser.parseFormula('pw');
var u = Formula.unifyTerms(f1.terms, f2.terms);
assert(u === false);
}
}