-- in.cue --
sameValues: SmustBeF: {
	T: string | F
	F: {
		x: T
		@test(eq, {x: string})
		@test(shareID=SF)
	}
	S: F @test(eq, {x: string}) @test(shareID=SF)
}

sameValues: CmustBeA: {
	A: {
		x: [ string | A ]
		@test(eq, {x: [string]})
		@test(shareID=CA)
	}
	C: A @test(eq, {x: [string]}) @test(shareID=CA)
}
-- out/todo.txt --
v2 expanded S and C into independent copies; v3 uses structure sharing
(S: ~(sameValues.SmustBeF.F), C: ~(sameValues.CmustBeA.A)).
-- out/eval/stats --
Leaks:  2
Freed:  15
Reused: 6
Allocs: 11
Retain: 0

Unifications: 13
Conjuncts:    19
Disjuncts:    4

NumCloseIDs: 1
