-- in.cue --
#Artifact: {
	body: _
	other: [string]: int
}

#App:  #Artifact
#Atom: #Artifact

#Both: #App | #Atom

t1: #Both & {body: 3}
-- out/eval/stats --
Leaks:  0
Freed:  24
Reused: 19
Allocs: 5
Retain: 0

Unifications: 20
Conjuncts:    38
Disjuncts:    24
-- out/evalalpha --
(struct){
  #Artifact: (#struct){
    body: (_){ _ }
    other: (#struct){
    }
  }
  #App: ~(#Artifact)
  #Atom: ~(#Artifact)
  #Both: (#struct){
    body: (_){ _ }
    other: (#struct){
    }
  }
  t1: (#struct){
    body: (int){ 3 }
    other: (#struct){
    }
  }
}
-- diff/-out/evalalpha<==>+out/eval --
diff old new
--- old
+++ new
@@ -4,16 +4,8 @@
     other: (#struct){
     }
   }
-  #App: (#struct){
-    body: (_){ _ }
-    other: (#struct){
-    }
-  }
-  #Atom: (#struct){
-    body: (_){ _ }
-    other: (#struct){
-    }
-  }
+  #App: ~(#Artifact)
+  #Atom: ~(#Artifact)
   #Both: (#struct){
     body: (_){ _ }
     other: (#struct){
-- out/eval --
(struct){
  #Artifact: (#struct){
    body: (_){ _ }
    other: (#struct){
    }
  }
  #App: (#struct){
    body: (_){ _ }
    other: (#struct){
    }
  }
  #Atom: (#struct){
    body: (_){ _ }
    other: (#struct){
    }
  }
  #Both: (#struct){
    body: (_){ _ }
    other: (#struct){
    }
  }
  t1: (#struct){
    body: (int){ 3 }
    other: (#struct){
    }
  }
}
-- out/compile --
--- in.cue
{
  #Artifact: {
    body: _
    other: {
      [string]: int
    }
  }
  #App: 〈0;#Artifact〉
  #Atom: 〈0;#Artifact〉
  #Both: (〈0;#App〉|〈0;#Atom〉)
  t1: (〈0;#Both〉 & {
    body: 3
  })
}
