# Contexts

The circumstances which allow certain coercions are called contexts. Each context has an intrinsic strength. There are five contexts called strong, firm, meek, weak and soft. The places in a program which have these contexts are:

- Strong contexts
  - The actual-parameters of calls
  - The enclosed clauses of casts
  - The right-hand side of assignments
  - The right-hand side of identity declarations
  - The right-hand side of initialised name declarations
  - The units of routine denotations
  - `VOID` units
  - All constituents except one of a balanced clause
  - One side of an identity relation
- Firm contexts
  - Operands of formulæ
  - The actual parameters of transput calls
- Meek contexts
  - Enquiry-clauses (including `WHILE`)
  - Primaries of calls
  - The units following `FROM`, `BY` and `TO` in a loop clause
  - Trimmers, subscripts and bounds (must yield an `INT`)
- Weak contexts
  - Primaries of slices
  - Secondaries of selections
- Soft contexts
  - The left-hand side of assignments
  - The other side of an identity relation (see strong context)