blob: d2e3a486b363fd76f57bedc33b40a65aea953f06 [file] [log] [blame]
@requires discrete-time
COMPONENT System1 system
INTERFACE
OUTPUT PORT output: integer;
CONTRACT Contract1Type
assume:
TRUE;
guarantee:
TRUE;
CONTRACT Contract2Type
assume:
TRUE;
guarantee:
TRUE;
CONTRACT Contract3Type
assume:
TRUE;
guarantee:
TRUE;
CONTRACT Contract4Type
assume:
TRUE;
guarantee:
G output > 5;
REFINEMENT
SUB block_1[0]: Block;
SUB block_1[1]: Block;
SUB block_1[2]: Block;
SUB block_1[3]: Block;
CONNECTION block_1[0].inputPort := block_1[3].outputPort;
CONNECTION output := count(block_1[0].output, block_1[1].output, block_1[2].output, block_1[3].output);
CONNECTION block_1[1].inputPort := block_1[0].outputPort;
CONNECTION block_1[2].inputPort := block_1[1].outputPort;
CONNECTION block_1[3].inputPort := block_1[2].outputPort;
CONTRACT Contract2Type REFINEDBY block_1[0].Contract2Type, block_1[1].Contract2Type, block_1[2].Contract2Type, block_1[3].Contract2Type;
CONTRACT Contract3Type REFINEDBY block_1[0].Contract3Type, block_1[1].Contract3Type, block_1[2].Contract3Type, block_1[3].Contract3Type;
CONTRACT Contract4Type REFINEDBY block_1[0].Contract4Type, block_1[1].Contract4Type, block_1[2].Contract4Type, block_1[3].Contract4Type;
CONTRACT Contract1Type REFINEDBY block_1[0].Contract1Type, block_1[1].Contract1Type, block_1[2].Contract1Type, block_1[3].Contract1Type;
COMPONENT Block
INTERFACE
INPUT PORT inputPort: boolean;
OUTPUT PORT outputPort: boolean;
OUTPUT PORT output: boolean;
CONTRACT Contract1Type
assume:
TRUE;
guarantee:
TRUE;
CONTRACT Contract2Type
assume:
TRUE;
guarantee:
TRUE;
CONTRACT Contract3Type
assume:
TRUE;
guarantee:
TRUE;
CONTRACT Contract4Type
assume:
TRUE;
guarantee:
G output = TRUE;
REFINEMENT