All variables in Noir are immutable and cannot be made mutable. Due to this, Noir will at some stages borrow functional programming concepts.
Witnesses in a proving system are immutable in nature. Noir aims to closely mirror this setting without applying additional overhead to the user. If a developer encounters a variable a he can lookup its definition to deduce its value.
The last section may be somewhat invalidated, if temporary scopes and shadowing is introduced.