An example of this error is the code
module M {
    export
        provides A, 
                 A.foo, // want to export foo, which refers to x
                 A.x    // to make export set self-consistent, need to export x
    class A {
        var x: int
        function method foo(): int
          reads this
        {
            x
        }
    }
}
which produces the error
ERROR_MutableField.dfy(5,19): Error: Cannot export mutable field 'x' without revealing its enclosing class 'A'
1 resolution/type errors detected in ERROR_MutableField.dfy
By only providing A, importers will know that A is a type, 
but won’t know that it is a reference type (here, a class). 
This makes it illegal to refer to a mutable field such as in the reads clause. 
So, you have to export A by revealing it.
Note, export reveals A does not export the members of A 
(except, it does export the anonymous constructor of A, if there is one). 
So, you still have control over which members of A to export.
The following code verifies without error:
module M {
    export
        reveals A
        provides  
                 A.foo, // want to export foo, which refers to x
                 A.x    // to make export set self-consistent, need to export x
    class A {
        var x: int
        function method foo(): int
          reads this
        {
            x
        }
    }
}