Skip to content

Why does the integral work when the lower bound is 0? #353

@shrey183

Description

@shrey183

Consider the following SMT2 file,

`
(set-logic QF_NRA_ODE)

(declare-fun x () Real)

(declare-fun x_0 () Real [0,10])

(declare-fun x_1 () Real [0,10])

(declare-fun x_2 () Real [0,10])

(declare-fun x_3 () Real [0,10])

(declare-fun time_1 () Real [0,10])

(declare-fun time_2 () Real [0,10])

(define-ode flow_1 ((= d/dt[x] 1)))



(assert (= x_0 0.0))

(assert (= time_1 1.0))

(assert (= time_2 2.0))

(assert
  (and
	;; EXPECT x_1 = 1
	(= [x_1] (integral 0.0 time_1 [x_0] flow_1))

	;; EXPECT x_2 = 2 
	(= [x_2] (integral 1.0 time_2 [x_1] flow_1))

	;; EXPECT x_3 = 0 
	(= [x_3] (integral 1.0 time_1 [x_1] flow_1))
  )
)


(check-sat)

(exit)

`

Here is the model obtained by dReal3,

` delta-sat with the following box:

time_1 : [1, 1];

time_2 : [2, 2];

x_0 : [0, 0];

x_1 : [1, 1];

x_2 : [3, 3];

x_3 : [2, 2]`

I have written comments stating what one should expect each variable to be, though I am not sure why we are getting the above model.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions