You are on page 1of 3

Company Name (unique) , Address, abn, Owner name, mobile, email, locations

Data types required:

CNAME – represents a single company/restaurant name

ADDRESS – represents a single address

ABN, OWNERNAME, MOBILE, EMAIL, ℕ1

COMPANYDETAILS ≙(ADDRESS, ABN, OWNERNAME, MOBILE, EMAIL,ℕ1) - tuple type

RESULT := [ Added | Already Exist ] free type

companyKnown = ℙCNAME ; set of known companies.

companyDetail : CNAME ⇸ COMPANYDETAILS

Initialization:

InitCompany
ΔCompany
companyKnown = ∅

State Schema:

Company
companyKnown : ℙCNAME
companyDetail: CNAME ⇸COMPANYDETAILS
companyKnown = dom companyDetail

Add Company:

AddCompany
ΔCompany
name? : CNAME
details? : COMPANYDETAILS
name? ∉ companyKnow
companyKnown′ = companyKnow ⋃ {name?}
companyDetail′ = companyDetail ⋃ (name?, details?)
companyDetail′ = companyDetail ⋃ {name? ↦ details?}

Robust Add Company:


AddCompany
ΔCompany
name? : CNAME
details? : COMPANYDETAILS
message? : RESULT
name? ∉ companyKnow
companyKnown′ = companyKnow ⋃ {name?}
companyDetail′ = companyDetail ⋃ (name?, details?) OR companyDetail′ = companyDetail ⋃ {name? ↦ detail
message? = Added

ExistCompany
Ξ Company
name? : CNAME
details? : COMPANYDETAILS
message? : RESULT
name? ∈ companyKnow
companyKnown′ = companyKnow
companyDetail′ = companyDetail
message? = Already Exist
RAddCompany ≙ AddCompany ∨ ExistCompany

Way2

RAddCompany
ΔCompany
name? : CNAME
details? : COMPANYDETAILS
message? : RESULT
( name? ∉ companyKnow ∧ companyKnown′ = companyKnow ⋃ {name?} ∧
companyDetail′ = companyDetail ⋃ (name?, details?) ∧ message? = Added )

( name? ∉ companyKnow ∧ message? = Already Exist )

State schema:
Company
companyKnown : ℙCNAME
companyDetail : CNAME ⇸COMPANYDETAILS
companyKnown = dom companyDetail
∀c1,c2:CNAME | c1∈companyKnown ∧ c2 ∈ companyKnown ⦁ c1 ≠c2
∀c1,c2 ∈companyKnown | c1 ≠c2

You might also like