@@ -4,122 +4,122 @@ import '../utils'; // For snapshot serializers
44
55export const ce = new ComputeEngine ( ) ;
66
7- ce . assume ( ce . box ( [ 'Equal' , 'one' , 1 ] ) ) ;
8- ce . assume ( ce . box ( [ 'Greater' , 'x' , 4 ] ) ) ;
7+ ce . assume ( ce . expr ( [ 'Equal' , 'one' , 1 ] ) ) ;
8+ ce . assume ( ce . expr ( [ 'Greater' , 'x' , 4 ] ) ) ;
99// ce.assume(['Element', 'm', ['Range', -Infinity, Infinity]]); @fixme
1010// ce.assume(['Element', 'n', ['Range', 0, Infinity]]); @fixme
11- ce . assume ( ce . box ( [ 'Equal' , 'o' , 1 ] ) ) ;
12- ce . assume ( ce . box ( [ 'Equal' , 'p' , 11 ] ) ) ;
11+ ce . assume ( ce . expr ( [ 'Equal' , 'o' , 1 ] ) ) ;
12+ ce . assume ( ce . expr ( [ 'Equal' , 'p' , 11 ] ) ) ;
1313// ce.assume(['Element', 'q', ['Range', -Infinity, 0]]); @fixme
1414// ce.assume(['Element', 'r', ['Interval', ['Open', 0], +Infinity]]); @fixme
1515
16- ce . assume ( ce . box ( [ 'Greater' , 's' , 5 ] ) ) ;
17- ce . assume ( ce . box ( [ 'Greater' , 't' , 0 ] ) ) ;
16+ ce . assume ( ce . expr ( [ 'Greater' , 's' , 5 ] ) ) ;
17+ ce . assume ( ce . expr ( [ 'Greater' , 't' , 0 ] ) ) ;
1818
1919// console.info([...ce.context!.dictionary!.symbols.keys()]);
2020
2121// #18: Value Resolution from Equality Assumptions
22- // When `ce.assume(['Equal', 'one', 1])` is made, `ce.box ('one').evaluate()` should return `1`
22+ // When `ce.assume(['Equal', 'one', 1])` is made, `ce.expr ('one').evaluate()` should return `1`
2323describe ( 'VALUE RESOLUTION FROM EQUALITY ASSUMPTIONS' , ( ) => {
2424 test ( `one.value should be 1` , ( ) => {
25- expect ( ce . box ( 'one' ) . evaluate ( ) . json ) . toEqual ( 1 ) ;
25+ expect ( ce . expr ( 'one' ) . evaluate ( ) . json ) . toEqual ( 1 ) ;
2626 } ) ;
2727
2828 test ( `one.domain should be integer` , ( ) => {
2929 // The type might be 'finite_integer' (subtype of integer)
30- expect ( ce . box ( 'one' ) . type . matches ( 'integer' ) ) . toBe ( true ) ;
30+ expect ( ce . expr ( 'one' ) . type . matches ( 'integer' ) ) . toBe ( true ) ;
3131 } ) ;
3232
3333 test ( `Equal(one, 1) should evaluate to True` , ( ) => {
34- expect ( ce . box ( [ 'Equal' , 'one' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
34+ expect ( ce . expr ( [ 'Equal' , 'one' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
3535 } ) ;
3636
3737 test ( `Equal(o, 1) should evaluate to True` , ( ) => {
38- expect ( ce . box ( [ 'Equal' , 'o' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
38+ expect ( ce . expr ( [ 'Equal' , 'o' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
3939 } ) ;
4040
4141 test ( `NotEqual(one, 1) should evaluate to False` , ( ) => {
42- expect ( ce . box ( [ 'NotEqual' , 'one' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
42+ expect ( ce . expr ( [ 'NotEqual' , 'one' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
4343 } ) ;
4444
4545 test ( `Equal(one, 0) should evaluate to False` , ( ) => {
46- expect ( ce . box ( [ 'Equal' , 'one' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
46+ expect ( ce . expr ( [ 'Equal' , 'one' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
4747 } ) ;
4848} ) ;
4949
5050// #19: Inequality Evaluation Using Assumptions
5151// When `x > 4` is assumed, `['Greater', 'x', 0]` should evaluate to True
5252describe ( 'INEQUALITY EVALUATION USING ASSUMPTIONS' , ( ) => {
5353 test ( `Greater(x, 0) should be True (x > 4 assumed)` , ( ) => {
54- expect ( ce . box ( [ 'Greater' , 'x' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
54+ expect ( ce . expr ( [ 'Greater' , 'x' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
5555 } ) ;
5656
5757 test ( `Less(x, 0) should be False (x > 4 assumed)` , ( ) => {
58- expect ( ce . box ( [ 'Less' , 'x' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
58+ expect ( ce . expr ( [ 'Less' , 'x' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
5959 } ) ;
6060
6161 test ( `Greater(t, 0) should be True (t > 0 assumed)` , ( ) => {
62- expect ( ce . box ( [ 'Greater' , 't' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
62+ expect ( ce . expr ( [ 'Greater' , 't' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
6363 } ) ;
6464
6565 test ( `Greater(one, 0) should be True (one = 1 assumed)` , ( ) => {
66- expect ( ce . box ( [ 'Greater' , 'one' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
66+ expect ( ce . expr ( [ 'Greater' , 'one' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
6767 } ) ;
6868
6969 test ( `Less(one, 0) should be False (one = 1 assumed)` , ( ) => {
70- expect ( ce . box ( [ 'Less' , 'one' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
70+ expect ( ce . expr ( [ 'Less' , 'one' , 0 ] ) . evaluate ( ) . json ) . toEqual ( 'False' ) ;
7171 } ) ;
7272
7373 test ( `GreaterEqual(one, 1) should be True` , ( ) => {
74- expect ( ce . box ( [ 'GreaterEqual' , 'one' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
74+ expect ( ce . expr ( [ 'GreaterEqual' , 'one' , 1 ] ) . evaluate ( ) . json ) . toEqual ( 'True' ) ;
7575 } ) ;
7676} ) ;
7777
7878// #20: Tautology and Contradiction Detection
7979// ce.assume() should return 'tautology' for redundant assumptions and 'contradiction' for conflicting ones
8080describe ( 'TAUTOLOGY AND CONTRADICTION DETECTION' , ( ) => {
8181 test ( `assuming one = 1 again should return tautology` , ( ) => {
82- expect ( ce . assume ( ce . box ( [ 'Equal' , 'one' , 1 ] ) ) ) . toEqual ( 'tautology' ) ;
82+ expect ( ce . assume ( ce . expr ( [ 'Equal' , 'one' , 1 ] ) ) ) . toEqual ( 'tautology' ) ;
8383 } ) ;
8484
8585 test ( `assuming one < 0 should return contradiction (one = 1)` , ( ) => {
86- expect ( ce . assume ( ce . box ( [ 'Less' , 'one' , 0 ] ) ) ) . toEqual ( 'contradiction' ) ;
86+ expect ( ce . assume ( ce . expr ( [ 'Less' , 'one' , 0 ] ) ) ) . toEqual ( 'contradiction' ) ;
8787 } ) ;
8888
8989 test ( `assuming x < 0 should return contradiction (x > 4)` , ( ) => {
90- expect ( ce . assume ( ce . box ( [ 'Less' , 'x' , 0 ] ) ) ) . toEqual ( 'contradiction' ) ;
90+ expect ( ce . assume ( ce . expr ( [ 'Less' , 'x' , 0 ] ) ) ) . toEqual ( 'contradiction' ) ;
9191 } ) ;
9292
9393 test ( `assuming x > 0 should return tautology (x > 4 implies x > 0)` , ( ) => {
94- expect ( ce . assume ( ce . box ( [ 'Greater' , 'x' , 0 ] ) ) ) . toEqual ( 'tautology' ) ;
94+ expect ( ce . assume ( ce . expr ( [ 'Greater' , 'x' , 0 ] ) ) ) . toEqual ( 'tautology' ) ;
9595 } ) ;
9696} ) ;
9797
9898// #21: Type Inference from Assumptions - IMPLEMENTED
9999// When assumptions are made, symbol types should be inferred
100100describe ( 'TYPE INFERENCE FROM ASSUMPTIONS' , ( ) => {
101101 test ( `x should have type real (x > 4 assumed)` , ( ) => {
102- expect ( ce . box ( 'x' ) . type . toString ( ) ) . toBe ( 'real' ) ;
102+ expect ( ce . expr ( 'x' ) . type . toString ( ) ) . toBe ( 'real' ) ;
103103 } ) ;
104104
105105 test ( `s should have type real (s > 5 assumed)` , ( ) => {
106- expect ( ce . box ( 's' ) . type . toString ( ) ) . toBe ( 'real' ) ;
106+ expect ( ce . expr ( 's' ) . type . toString ( ) ) . toBe ( 'real' ) ;
107107 } ) ;
108108
109109 test ( `t should have type real (t > 0 assumed)` , ( ) => {
110- expect ( ce . box ( 't' ) . type . toString ( ) ) . toBe ( 'real' ) ;
110+ expect ( ce . expr ( 't' ) . type . toString ( ) ) . toBe ( 'real' ) ;
111111 } ) ;
112112
113113 test ( `one should have type integer (one = 1 assumed)` , ( ) => {
114- expect ( ce . box ( 'one' ) . type . toString ( ) ) . toBe ( 'integer' ) ;
114+ expect ( ce . expr ( 'one' ) . type . toString ( ) ) . toBe ( 'integer' ) ;
115115 } ) ;
116116
117117 test ( `o should have type integer (o = 1 assumed)` , ( ) => {
118- expect ( ce . box ( 'o' ) . type . toString ( ) ) . toBe ( 'integer' ) ;
118+ expect ( ce . expr ( 'o' ) . type . toString ( ) ) . toBe ( 'integer' ) ;
119119 } ) ;
120120
121121 test ( `p should have type integer (p = 11 assumed)` , ( ) => {
122- expect ( ce . box ( 'p' ) . type . toString ( ) ) . toBe ( 'integer' ) ;
122+ expect ( ce . expr ( 'p' ) . type . toString ( ) ) . toBe ( 'integer' ) ;
123123 } ) ;
124124} ) ;
125125
@@ -187,33 +187,33 @@ describe('ASSUMPTION-BASED SIMPLIFICATION', () => {
187187 test ( 'isPositive returns true when x > 0 is assumed' , ( ) => {
188188 const ce = new ComputeEngine ( ) ;
189189 ce . assume ( ce . parse ( 'x > 0' ) ) ;
190- expect ( ce . box ( 'x' ) . isPositive ) . toBe ( true ) ;
191- expect ( ce . box ( 'x' ) . isNonNegative ) . toBe ( true ) ;
192- expect ( ce . box ( 'x' ) . isNegative ) . toBe ( false ) ;
190+ expect ( ce . expr ( 'x' ) . isPositive ) . toBe ( true ) ;
191+ expect ( ce . expr ( 'x' ) . isNonNegative ) . toBe ( true ) ;
192+ expect ( ce . expr ( 'x' ) . isNegative ) . toBe ( false ) ;
193193 } ) ;
194194
195195 test ( 'isNegative returns true when x < 0 is assumed' , ( ) => {
196196 const ce = new ComputeEngine ( ) ;
197197 ce . assume ( ce . parse ( 'x < 0' ) ) ;
198- expect ( ce . box ( 'x' ) . isNegative ) . toBe ( true ) ;
199- expect ( ce . box ( 'x' ) . isNonPositive ) . toBe ( true ) ;
200- expect ( ce . box ( 'x' ) . isPositive ) . toBe ( false ) ;
198+ expect ( ce . expr ( 'x' ) . isNegative ) . toBe ( true ) ;
199+ expect ( ce . expr ( 'x' ) . isNonPositive ) . toBe ( true ) ;
200+ expect ( ce . expr ( 'x' ) . isPositive ) . toBe ( false ) ;
201201 } ) ;
202202
203203 test ( 'isNonNegative returns true when x >= 0 is assumed' , ( ) => {
204204 const ce = new ComputeEngine ( ) ;
205205 ce . assume ( ce . parse ( 'x \\ge 0' ) ) ;
206- expect ( ce . box ( 'x' ) . isNonNegative ) . toBe ( true ) ;
206+ expect ( ce . expr ( 'x' ) . isNonNegative ) . toBe ( true ) ;
207207 // Could be zero, so not strictly positive
208- expect ( ce . box ( 'x' ) . isPositive ) . toBe ( undefined ) ;
208+ expect ( ce . expr ( 'x' ) . isPositive ) . toBe ( undefined ) ;
209209 } ) ;
210210
211211 test ( 'isNonPositive returns true when x <= 0 is assumed' , ( ) => {
212212 const ce = new ComputeEngine ( ) ;
213213 ce . assume ( ce . parse ( 'x \\le 0' ) ) ;
214- expect ( ce . box ( 'x' ) . isNonPositive ) . toBe ( true ) ;
214+ expect ( ce . expr ( 'x' ) . isNonPositive ) . toBe ( true ) ;
215215 // Could be zero, so not strictly negative
216- expect ( ce . box ( 'x' ) . isNegative ) . toBe ( undefined ) ;
216+ expect ( ce . expr ( 'x' ) . isNegative ) . toBe ( undefined ) ;
217217 } ) ;
218218
219219 test ( 'assumptions do not leak between engine instances' , ( ) => {
@@ -223,6 +223,6 @@ describe('ASSUMPTION-BASED SIMPLIFICATION', () => {
223223 const ce2 = new ComputeEngine ( ) ;
224224 // x should have unknown sign in ce2
225225 expect ( ce2 . parse ( '\\sqrt{x^2}' ) . simplify ( ) . latex ) . toBe ( '\\vert x\\vert' ) ;
226- expect ( ce2 . box ( 'x' ) . isPositive ) . toBe ( undefined ) ;
226+ expect ( ce2 . expr ( 'x' ) . isPositive ) . toBe ( undefined ) ;
227227 } ) ;
228228} ) ;
0 commit comments