19.11.2014 Views

The Fortress Language Specification - CiteSeerX

The Fortress Language Specification - CiteSeerX

The Fortress Language Specification - CiteSeerX

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

trait RationalQuantityunit U absorbs unit,bool ninf ,bool lt,bool eq,bool gt,bool pinf ,bool nan<br />

extends { RationalQuantityU,ninf ′ ,lt ′ ,eq ′ ,gt ′ ,pinf ′ ,nan ′ <br />

where {bool ninf ′ ,bool lt ′ ,bool eq ′ ,bool gt ′ ,bool pinf ′ ,bool nan ′ ,<br />

ninf → ninf ′ ,lt → lt ′ ,eq → eq ′ ,gt → gt ′ ,pinf → pinf ′ ,nan → nan ′ },<br />

Field RationalQuantityU,ninf ,lt,eq,gt,pinf ,nan,<br />

RationalQuantityU,ninf ,lt,false,gt,pinf ,nan, +, −, ·, /<br />

where {lt ∧ eq ∧ gt ∧ ¬ninf ∧ ¬pinf ∧ ¬nan, U = dimensionless },<br />

Field RationalQuantityU,ninf ,lt,eq,gt,pinf ,nan,<br />

RationalQuantityU,ninf ,lt,false,gt,pinf ,nan, +, −, ×, /<br />

where {lt ∧ eq ∧ gt ∧ ¬ninf ∧ ¬pinf ∧ ¬nan, U = dimensionless },<br />

Field RationalQuantityU,ninf ,lt,eq,gt,pinf ,nan,<br />

RationalQuantityU,ninf ,lt,false,gt,pinf ,nan, +, −,juxtaposition, /<br />

where {lt ∧ eq ∧ gt ∧ ¬ninf ∧ ¬pinf ∧ ¬nan, U = dimensionless },<br />

AbelianGroupRationalQuantityU,ninf ,lt,eq,gt,pinf ,nan, +, −,<br />

TotalOrderOperatorsRationalQuantityU,ninf ,lt,eq,gt,pinf ,nan, ,CMP<br />

where { ¬nan } }<br />

where {ninf ∨ lt ∨ eq ∨ gt ∨ pinf ∨ nan }<br />

coercion ( : Identity+) = 0<br />

coercion ( : Identity·) = 1<br />

coercion ( : Identity×) = 1<br />

coercion ( : Identityjuxtaposition) = 1<br />

coercion ( : Zero×) = 0<br />

coercion (x:IntegerQuantityU,ninf ,lt,eq,gt,pinf ,nan)<br />

opr juxtaposition unit U ′ ,bool ninf ′ ,bool lt ′ ,bool eq ′ ,bool gt ′ ,bool pinf ′ ,bool nan ′ <br />

(self,other:RationalQuantityU ′ ,ninf ′ ,lt ′ ,eq ′ ,gt ′ ,pinf ′ ,nan ′ ) :<br />

RationalQuantity U U ′ ,<br />

ninf ∧ pinf ′ ∨ ninf ∧ gt ′ ∨ lt ∧ pinf ′ ∨ pinf ∧ ninf ′ ∨ pinf ∧ lt ′ ∨ gt ∧ ninf ′ ,<br />

lt ∧ gt ′ ∨ gt ∧ lt ′ ,<br />

eq ∧ (lt ′ ∨ eq ′ ∨ gt ′ ) ∨ (lt ∨ eq ∨ gt) ∧ eq ′ ,<br />

lt ∧ lt ′ ∨ gt ∧ gt ′ ,<br />

ninf ∧ ninf ′ ∨ ninf ∧ lt ′ ∨ lt ∧ ninf ′ ∨ pinf ∧ pinf ′ ∨ pinf ∧ gt ′ ∨ gt ∧ pinf ′ ,<br />

nan ∨ nan ′ ∨ ninf ∧ eq ′ ∨ pinf ∧ eq ′ ∨ eq ∧ ninf ′ ∨ eq ∧ pinf ′ <br />

opr +(self): RationalQuantityU,ninf ,lt,eq,gt,pinf ,nan<br />

opr +bool ninf ′ ,bool lt ′ ,bool eq ′ ,bool gt ′ ,bool inf ′ ,bool nan ′ <br />

(self,other:RationalQuantityU,ninf ′ ,lt ′ ,eq ′ ,gt ′ ,pinf ′ ,nan ′ ) :<br />

RationalQuantity U,<br />

ninf ∧ (ninf ′ ∨ lt ′ ∨ eq ′ ∨ gt ′ ) ∨ (ninf ∨ lt ∨ eq ∨ gt) ∧ ninf ′ ,<br />

lt ∧ (lt ′ ∨ eq ′ ∨ gt ′ ) ∨ (lt ∨ eq ∨ gt) ∧ lt ′ ,<br />

lt ∧ gt ′ ∨ eq ∧ eq ′ ∨ gt ∧ lt ′ ,<br />

gt ∧ (lt ′ ∨ eq ′ ∨ gt ′ ) ∨ (lt ∨ eq ∨ gt) ∧ gt ′ ,<br />

pinf ∧ (lt ′ ∨ eq ′ ∨ gt ′ ∨ pinf ′ ) ∨ (lt ∨ eq ∨ gt ∨ pinf ) ∧ pinf ′ ,<br />

nan ∨ nan ′ ∨ ninf ∧ pinf ′ ∨ pinf ∧ ninf ′ <br />

opr −(self): RationalQuantityU,pinf ,gt,eq,lt,ninf ,nan<br />

opr −bool ninf ′ ,bool lt ′ ,bool eq ′ ,bool gt ′ ,bool pinf ′ ,bool nan ′ <br />

(self,other:RationalQuantityU,ninf ′ ,lt ′ ,eq ′ ,gt ′ ,pinf ′ ,nan ′ ) :<br />

RationalQuantity U,<br />

ninf ∧ (lt ′ ∨ eq ′ ∨ gt ′ ∨ pinf ′ ) ∨ (ninf ∨ lt ∨ eq ∨ gt) ∧ pinf ′ ,<br />

lt ∧ (lt ′ ∨ eq ′ ∨ gt ′ ) ∨ (lt ∨ eq ∨ gt) ∧ gt ′ ,<br />

lt ∧ lt ′ ∨ eq ∧ eq ′ ∨ gt ∧ gt ′ ,<br />

gt ∧ (lt ′ ∨ eq ′ ∨ gt ′ ) ∨ (lt ∨ eq ∨ gt) ∧ lt ′ ,<br />

pinf ∧ (ninf ′ ∨ lt ′ ∨ eq ′ ∨ gt ′ ) ∨ (lt ∨ eq ∨ gt ∨ pinf ) ∧ ninf ′ ,<br />

nan ∨ nan ′ ∨ ninf ∧ ninf ′ ∨ pinf ∧ pinf ′ <br />

263

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!