# DO NOT EDIT; generated by go run testdata/gen.go
#
#name: resolved self-reference cycles with disjunction
#evalPartial
-- in.cue --
// The second disjunct in xa1 is not resolvable and can be
// eliminated:
//   xa4 & 9
//   (xa2 + 2) & 9
//   ((xa3 + 2) + 2) & 9
//   (((6 & xa1-2) + 2) + 2) & 9
//   ((6 + 2) + 2) & 9 // 6 == xa1-2
//   10 & 9 => _|_
// The remaining values resolve.
xa1: (xa2 & 8) | (xa4 & 9)
xa2: xa3 + 2
xa3: 6 & xa1-2
xa4: xa2 + 2

// The second disjunct in xb4 can be eliminated as both disjuncts
// of xb3 result in an incompatible sum when substituted.
xb1: (xb2 & 8) | (xb4 & 9)
xb2: xb3 + 2
xb3: (6 & (xb1 - 2)) | (xb4 & 9)
xb4: xb2 + 2

// Another variant with more disjunctions. xc1 remains with two
// possibilities. Technically, only the first value is valid.
// However, to fully determine that, all options of the remaining
// disjunction will have to be evaluated algebraically, which is
// not done.
xc1: xc2 & 8 | xc4 & 9 | xc5 & 9
xc2: xc3 + 2
xc3: 6 & xc1-2
xc4: xc2 + 1
xc5: xc2 + 2

// The below is resolved by setting xd1 explicitly.
xd1: xd2 & 8 | xd4 & 9 | xd5 & 9
xd2: xd3 + 2
xd3: 6 & xd1-2
xd4: xd2 + 1
xd5: xd2 + 2
xd1: 8

// The below is resolved by setting xd1 explicitly to the wrong
// value, resulting in an error.
xe1: xe2 & 8 | xe4 & 9 | xe5 & 9
xe2: xe3 + 2
xe3: 6 & xe1-2
xe4: xe2 + 1
xe5: xe2 + 2
xe1: 9

// Only one solution.
xf1: xf2 & 8 | xf4 & 9
xf2: xf3 + 2
xf3: 6 & xf1-2 | xf4 & 9
xf4: xf2 + 2

z1: z2+1 | z3+5 // +3 for fun
z2: z3 + 2
z3: z1 - 3
z3: 8
-- out/def --
// The second disjunct in xa1 is not resolvable and can be
// eliminated:
//   xa4 & 9
//   (xa2 + 2) & 9
//   ((xa3 + 2) + 2) & 9
//   (((6 & xa1-2) + 2) + 2) & 9
//   ((6 + 2) + 2) & 9 // 6 == xa1-2
//   10 & 9 => _|_
// The remaining values resolve.
xa1: 8
xa2: 8
xa4: 10
xa3: 6

// The second disjunct in xb4 can be eliminated as both disjuncts
// of xb3 result in an incompatible sum when substituted.
xb1: 8
xb2: 8
xb4: 10
xb3: 6

// Another variant with more disjunctions. xc1 remains with two
// possibilities. Technically, only the first value is valid.
// However, to fully determine that, all options of the remaining
// disjunction will have to be evaluated algebraically, which is
// not done.
xc1: xc2 & 8 | xc4 & 9 | xc5 & 9
xc2: xc3 + 2
xc4: xc2 + 1
xc5: xc2 + 2
xc3: 6 & xc1-2

// The above is resolved by setting xd1 explicitly.
xd1: 8
xd2: 8
xd4: 9
xd5: 10
xd3: 6

// The above is resolved by setting xd1 explicitly to the wrong
// value, resulting in an error.
xe1: _|_ // conflicting values 6 and 7
xe2: _|_ // conflicting values 6 and 7
xe4: _|_ // conflicting values 6 and 7
xe5: _|_ // conflicting values 6 and 7
xe3: _|_ // conflicting values 6 and 7

// Only one solution.
xf1: 8
xf2: 8
xf4: 10
xf3: 6
z1:  z2+1 | z3+5
z2:  z3 + 2
z3:  z1-3 & 8
-- out/legacy-debug --
<0>{xa1: 8, xa2: 8, xa4: 10, xa3: 6, xb1: 8, xb2: 8, xb4: 10, xb3: 6, xc1: ((<1>.xc2 & 8) | (<1>.xc4 & 9) | (<1>.xc5 & 9)), xc2: (<1>.xc3 + 2), xc4: (<1>.xc2 + 1), xc5: (<1>.xc2 + 2), xc3: (6 & (<1>.xc1 - 2)), xd1: 8, xd2: 8, xd4: 9, xd5: 10, xd3: 6, xe1: _|_((6 & 7):conflicting values 6 and 7), xe2: _|_((6 & 7):conflicting values 6 and 7), xe4: _|_((6 & 7):conflicting values 6 and 7), xe5: _|_((6 & 7):conflicting values 6 and 7), xe3: _|_((6 & 7):conflicting values 6 and 7), xf1: 8, xf2: 8, xf4: 10, xf3: 6, z1: ((<1>.z2 + 1) | (<1>.z3 + 5)), z2: (<1>.z3 + 2), z3: ((<1>.z1 - 3) & 8)}
-- out/compile --
--- in.cue
{
  xa1: ((〈0;xa2〉 & 8)|(〈0;xa4〉 & 9))
  xa2: (〈0;xa3〉 + 2)
  xa3: (6 & (〈0;xa1〉 - 2))
  xa4: (〈0;xa2〉 + 2)
  xb1: ((〈0;xb2〉 & 8)|(〈0;xb4〉 & 9))
  xb2: (〈0;xb3〉 + 2)
  xb3: ((6 & (〈0;xb1〉 - 2))|(〈0;xb4〉 & 9))
  xb4: (〈0;xb2〉 + 2)
  xc1: ((〈0;xc2〉 & 8)|(〈0;xc4〉 & 9)|(〈0;xc5〉 & 9))
  xc2: (〈0;xc3〉 + 2)
  xc3: (6 & (〈0;xc1〉 - 2))
  xc4: (〈0;xc2〉 + 1)
  xc5: (〈0;xc2〉 + 2)
  xd1: ((〈0;xd2〉 & 8)|(〈0;xd4〉 & 9)|(〈0;xd5〉 & 9))
  xd2: (〈0;xd3〉 + 2)
  xd3: (6 & (〈0;xd1〉 - 2))
  xd4: (〈0;xd2〉 + 1)
  xd5: (〈0;xd2〉 + 2)
  xd1: 8
  xe1: ((〈0;xe2〉 & 8)|(〈0;xe4〉 & 9)|(〈0;xe5〉 & 9))
  xe2: (〈0;xe3〉 + 2)
  xe3: (6 & (〈0;xe1〉 - 2))
  xe4: (〈0;xe2〉 + 1)
  xe5: (〈0;xe2〉 + 2)
  xe1: 9
  xf1: ((〈0;xf2〉 & 8)|(〈0;xf4〉 & 9))
  xf2: (〈0;xf3〉 + 2)
  xf3: ((6 & (〈0;xf1〉 - 2))|(〈0;xf4〉 & 9))
  xf4: (〈0;xf2〉 + 2)
  z1: ((〈0;z2〉 + 1)|(〈0;z3〉 + 5))
  z2: (〈0;z3〉 + 2)
  z3: (〈0;z1〉 - 3)
  z3: 8
}
-- out/eval --
Errors:
xe3: incompatible values 7 and 6:
    ./in.cue:44:6

Result:
(_|_){
  // [eval]
  xa1: (int){ 8 }
  xa2: (int){ 8 }
  xa3: (int){ 6 }
  xa4: (int){ 10 }
  xb1: (int){ |((int){ 8 }, (int){ 9 }) }
  xb2: (_|_){
    // [incomplete]
  }
  xb3: (int){ |((int){ 6 }, (int){ 9 }) }
  xb4: (_|_){
    // [cycle] cycle error
  }
  xc1: (int){ |((int){ 8 }, (int){ 9 }) }
  xc2: (int){ 8 }
  xc3: (int){ 6 }
  xc4: (int){ 9 }
  xc5: (int){ 10 }
  xd1: (int){ 8 }
  xd2: (int){ 8 }
  xd3: (int){ 6 }
  xd4: (int){ 9 }
  xd5: (int){ 10 }
  xe1: (_|_){
    // [incomplete] xe1: empty disjunction
  }
  xe2: (_|_){
    // [eval] xe3: incompatible values 7 and 6:
    //     ./in.cue:44:6
  }
  xe3: (_|_){
    // [eval] xe3: incompatible values 7 and 6:
    //     ./in.cue:44:6
  }
  xe4: (_|_){
    // [eval] xe3: incompatible values 7 and 6:
    //     ./in.cue:44:6
  }
  xe5: (_|_){
    // [eval] xe3: incompatible values 7 and 6:
    //     ./in.cue:44:6
  }
  xf1: (int){ |((int){ 8 }, (int){ 9 }) }
  xf2: (_|_){
    // [incomplete]
  }
  xf3: (int){ |((int){ 6 }, (int){ 9 }) }
  xf4: (_|_){
    // [cycle] cycle error
  }
  z1: (int){ |((int){ 11 }, (int){ 13 }) }
  z2: (int){ 10 }
  z3: (int){ 8 }
}
