Like 11, but using a let comprehension. For trim, the let
comprehension is treated the same as a field. I.e. in this case, it's
no different to s: {a: bool, b: "hi"}, and so no simplification can
occur.

-- a.cue --
let s = {a: bool, b: "hi"}
x: s & {a: true, b: string}
-- out/trim-v3 --
== a.cue
let s = {a: bool, b: "hi"}
x: s & {a: true}
-- diff/-out/trim-v3<==>+out/trim --
diff old new
--- old
+++ new
@@ -1,3 +1,3 @@
 == a.cue
 let s = {a: bool, b: "hi"}
-x: s & {a: true, b: string}
+x: s & {a: true}
-- out/trim-v3-noshare --
== a.cue
let s = {a: bool, b: "hi"}
x: s & {a: true}
-- diff/-out/trim-v3-noshare<==>+out/trim --
diff old new
--- old
+++ new
@@ -1,3 +1,3 @@
 == a.cue
 let s = {a: bool, b: "hi"}
-x: s & {a: true, b: string}
+x: s & {a: true}
-- out/trim --
== a.cue
let s = {a: bool, b: "hi"}
x: s & {a: true, b: string}
