You are on page 1of 9

SUBMITTED BY: MARYAM SIDDIQUI, RIDA ARSHAD

REGISTERATION NO: 20-SE-07 ,20-SE-15

SECTION: ALPHA

SUBJECT: FMSE

DEPARTEMENT: SOFTWARE ENGINEERING


PROJECT
AMN
MACHINE
doodlerrrrr
CONSTANTS
mintemp, maxtemp,te
PROPERTIES
mintemp=100 ∧ maxtemp=250 ∧ te=10
VARIABLES
status,heatingsystem, plasticstatus, button, penstatus,settemp

INVARIANT
settemp ∈ ℕ∧ mintemp∈ ℕ∧maxtemp∈ ℕ ∧settemp ∈ ℕ ∧te ∈ ℕ ∧ mintemp<settemp ∧
settemp<maxtemp ∧ ∧ heatingsystem:BOOL ∧ plasticstatus :BOOL ∧ button:BOOL ∧
status:BOOL
penstatus :BOOL

INITIALISATION
status, heatingsystem, plasticstatus,button, penstatus,settemp := FALSE, FALSE,FALSE,
FALSE,FALSE,150
OPERATIONS
START =
PRE status=FALSE&heatingsystem=FALSE
THEN
status:=TRUE
END;

HT =
PRE status=TRUE&heatingsystem=FALSE
THEN
heatingsystem:=TRUE
END;

beginworking=
PRE status=TRUE &heatingsystem= TRUE
THEN
button:= TRUE
END;

melting=
PRE status=TRUE& heatingsystem= TRUE &button =TRUE
THEN
plasticstatus:=TRUE
END;

tempcheck=
PRE mintemp<=te∧te<=maxtemp ∧te:ℕ
THEN settemp:=te
END;
working_pen =
PRE status= TRUE & heatingsystem=TRUE &button=TRUE &plasticstatus=TRUE
THEN

penstatus:=TRUE

END
END

PROOF OBLIGATIONS
--------------------
"Invariant is preserved" => 150: NATURAL
--------------------
"Invariant is preserved" => mintemp: NATURAL
--------------------
"Invariant is preserved" => maxtemp: NATURAL
--------------------
"Invariant is preserved" => te: NATURAL
--------------------
"Invariant is preserved" => mintemp+1<=150
--------------------
"Invariant is preserved" => 150+1<=maxtemp
--------------------
"Invariant is preserved" => mintemp+1<=te
--------------------
"Invariant is preserved" => te+1<=maxtemp

REFINEMENT
REFINEMENT doodlerrrrr_r
REFINES doodlerrrrr

VARIABLES
status,heatingsystem, plasticstatus, button, penstatus,settemp

INITIALISATION
status, heatingsystem, plasticstatus,button, penstatus,settemp := FALSE, FALSE,FALSE,
FALSE,FALSE,150

OPERATIONS
START =
PRE status=FALSE&heatingsystem=FALSE
THEN
status:=TRUE
END;

HT =
PRE status=TRUE&heatingsystem=FALSE
THEN
heatingsystem:=TRUE
END;

beginworking=
PRE status=TRUE &heatingsystem= TRUE
THEN
button:= TRUE
END;
melting=
PRE status=TRUE& heatingsystem= TRUE &button =TRUE
THEN
plasticstatus:=TRUE
END;

tempcheck=
PRE mintemp<=te∧te<=maxtemp ∧te:ℕ
THEN settemp:=te
END;

working_pen =
PRE status= TRUE & heatingsystem=TRUE &button=TRUE &plasticstatus=TRUE
THEN

penstatus:=TRUE

END

END

PROOF OBLIGATIONS
--------------------
"Precondition can be deduced" => status$1 = FALSE
--------------------
"Precondition can be deduced" => heatingsystem$1 = FALSE
--------------------
"Precondition can be deduced" => status$1 = TRUE
--------------------
"Precondition can be deduced" => heatingsystem$1 = FALSE
--------------------
"Precondition can be deduced" => status$1 = TRUE
--------------------
"Precondition can be deduced" => heatingsystem$1 = TRUE
--------------------
"Precondition can be deduced" => status$1 = TRUE
--------------------
"Precondition can be deduced" => heatingsystem$1 = TRUE
--------------------
"Precondition can be deduced" => button$1 = TRUE
--------------------
"Precondition can be deduced" => status$1 = TRUE
--------------------
"Precondition can be deduced" => heatingsystem$1 = TRUE
--------------------
"Precondition can be deduced" => button$1 = TRUE
--------------------
"Precondition can be deduced" => plasticstatus$1 = TRUE
IMPLEMENTATION
IMPLEMENTATION doodlerrrrr_i
REFINES doodlerrrrr_r
VALUES
mintemp=100;maxtemp=250;te=10
CONCRETE_VARIABLES
status,heatingsystem, plasticstatus, button, penstatus,settemp

INITIALISATION
status, heatingsystem, plasticstatus,button, penstatus,settemp := FALSE, FALSE,FALSE,
FALSE,FALSE,150

OPERATIONS
START =
IF status=FALSE&heatingsystem=FALSE
THEN
status:=TRUE
END;

HT =
IF status=TRUE&heatingsystem=FALSE
THEN
heatingsystem:=TRUE
END;

beginworking=
IF status=TRUE &heatingsystem= TRUE
THEN
button:= TRUE
END;

melting=
IF status=TRUE& heatingsystem= TRUE &button =TRUE
THEN
plasticstatus:=TRUE
END;

tempcheck=
IF mintemp<=te∧te<=maxtemp
THEN settemp:=te
END;

working_pen =
IF status= TRUE & heatingsystem=TRUE &button=TRUE &plasticstatus=TRUE
THEN

penstatus:=TRUE

END
END

PROOF OBLIGATIONS
--------------------
status$1 = FALSE &
heatingsystem$1 = FALSE &
not(status$1 = FALSE & heatingsystem$1 = FALSE) &
"Refinement is correct"
=>
TRUE = status$1
--------------------
status$1 = TRUE &
heatingsystem$1 = FALSE &
not(status$1 = TRUE & heatingsystem$1 = FALSE) &
"Refinement is correct"
=>
TRUE = heatingsystem$1
--------------------
status$1 = TRUE &
heatingsystem$1 = TRUE &
not(status$1 = TRUE & heatingsystem$1 = TRUE) &
"Refinement is correct"
=>
TRUE = button$1
--------------------
status$1 = TRUE &
heatingsystem$1 = TRUE &
button$1 = TRUE &
not(status$1 = TRUE & heatingsystem$1 = TRUE & button$1 = TRUE) &
"Refinement is correct"
=>
TRUE = plasticstatus$1
--------------------
mintemp<=te &
te<=maxtemp &
not(mintemp<=te & te<=maxtemp) &
"Refinement is correct"
=>
te = settemp$1
--------------------
status$1 = TRUE &
heatingsystem$1 = TRUE &
button$1 = TRUE &
plasticstatus$1 = TRUE &
not(status$1 = TRUE & heatingsystem$1 = TRUE & button$1 = TRUE & plasticstatus$1 =
TRUE) &
"Refinement is correct"
=>
TRUE = penstatus$1

SCREENSHOT

CODE
#ifndef _doodlerrrrr_h

#define _doodlerrrrr_h

#include <stdint.h>

#include <stdbool.h>

#ifdef __cplusplus

extern "C" {

#endif /* __cplusplus */

/* Clause SETS */

/* Clause CONCRETE_CONSTANTS */

/* Basic constants */
/* TO DO: #define doodlerrrrr__mintemp */

/* TO DO: #define doodlerrrrr__maxtemp */

/* TO DO: #define doodlerrrrr__te */

/* Array and record constants */

/* Clause CONCRETE_VARIABLES */

extern void doodlerrrrr__INITIALISATION(void);

/* Clause OPERATIONS */

extern void doodlerrrrr__START(void);

extern void doodlerrrrr__HT(void);

extern void doodlerrrrr__beginworking(void);

extern void doodlerrrrr__melting(void);

extern void doodlerrrrr__tempcheck(void);

extern void doodlerrrrr__working_pen(void);

#ifdef __cplusplus

#endif /* __cplusplus */

#endif /* _doodlerrrrr_h */

You might also like