Set of real numbers: Difference between revisions

Content added Content deleted
m (minor edits)
Line 359: Line 359:


=={{header|Elena}}==
=={{header|Elena}}==
<lang elena>#import system.
<lang elena>#import extensions.
#import extensions.
extension setOp

#class(extension)setOp
{
{
#method union : func
union : func
= val [ self eval:val || func eval:val ].
= val [ self eval:val || func eval:val ].
#method intersection : func
intersection : func
= val [ self eval:val && func eval:val ].
= val [ self eval:val && func eval:val ].
#method difference : func
difference : func
= val [ self eval:val && func eval:val not ].
= val [ self eval:val && func eval:val not ].
}
}

#symbol program =
program =
[
[
// union
// union
#var set := x [ (x >= 0.0r) && (x <= 1.0r) ] union: x [ (x >= 0.0r) && (x < 2.0r) ].
var set := x [ (x >= 0.0r) && (x <= 1.0r) ] union: x [ (x >= 0.0r) && (x < 2.0r) ].
set eval:0.0r assert &ifTrue.
set eval:0.0r assert &ifTrue.
set eval:1.0r assert &ifTrue.
set eval:1.0r assert &ifTrue.
set eval:2.0r assert &ifFalse.
set eval:2.0r assert &ifFalse.
// intersection
// intersection
#var set2 := x [ (x >= 0.0r) && (x < 2.0r) ] intersection: x [ (x >= 1.0r) && (x <= 2.0r) ].
var set2 := x [ (x >= 0.0r) && (x < 2.0r) ] intersection: x [ (x >= 1.0r) && (x <= 2.0r) ].
set2 eval:0.0r assert &ifFalse.
set2 eval:0.0r assert &ifFalse.
set2 eval:1.0r assert &ifTrue.
set2 eval:1.0r assert &ifTrue.
set2 eval:2.0r assert &ifFalse.
set2 eval:2.0r assert &ifFalse.
// difference
// difference
#var set3 := x [ (x >= 0.0r) && (x < 3.0r) ] difference: x [ (x >= 0.0r) && (x <= 1.0r) ].
var set3 := x [ (x >= 0.0r) && (x < 3.0r) ] difference: x [ (x >= 0.0r) && (x <= 1.0r) ].
set3 eval:0.0r assert &ifFalse.
set3 eval:0.0r assert &ifFalse.
set3 eval:1.0r assert &ifFalse.
set3 eval:1.0r assert &ifFalse.