// Config {srcFile = "tests/pos/T2535.hs", cores = Nothing, minPartSize = 500, maxPartSize = 700, solver = z3, linear = False, stringTheory = False, defunction = False, allowHO = True, allowHOqs = False, eliminate = some, scrape = no, elimBound = Nothing, smtTimeout = Nothing, elimStats = False, solverStats = False, metadata = False, stats = False, parts = False, save = True, minimize = False, minimizeQs = False, minimizeKs = False, minimalSol = False, etaElim = False, gradual = False, ginteractive = False, autoKuts = False, nonLinCuts = False, noslice = False, rewriteAxioms = False, pleWithUndecidedGuards = False, etabeta = False, localRewrites = False, interpreter = False, oldPLE = False, noIncrPle = False, noEnvironmentReduction = True, inlineANFBindings = False, checkCstr = [], extensionality = False, rwTerminationCheck = False, stdin = False, json = False, noLazyPLE = False, fuel = Nothing, restOrdering = "rpo", noSmtHorn = False}
data AB 2 = [
| B {selectB : int}
| A {selectA : int}
]
data T 1 = [
| T {selectT1 : @(0)}
]
match selectA A lq_tmp$x##423 { lq_tmp$x##423 }
match selectB B lq_tmp$x##502 { lq_tmp$x##502 }
match check A lq_tmp$x##423 { true }
match check B lq_tmp$x##502 { false }
match isA A lq_tmp$x##423 { true }
match isA B lq_tmp$x##502 { false }
constant A : (func(2 , [int; (AB @(0) @(1))]))
constant selectA : (func(2 , [(AB @(0) @(1)); int]))
constant B : (func(2 , [int; (AB @(0) @(1))]))
constant selectB : (func(2 , [(AB @(0) @(1)); int]))
constant T : (func(1 , [@(0); (T @(0))]))
distinct A : (func(2 , [int; (AB @(0) @(1))]))
distinct B : (func(2 , [int; (AB @(0) @(1))]))
bind 1 A : {VV : func(2 , [int; (AB @(0) @(1))]) | []}
bind 2 B : {VV : func(2 , [int; (AB @(0) @(1))]) | []}
bind 3 T : {VV : func(1 , [@(0); (T @(0))]) | []}
bind 4 check : {VV : func(2 , [(AB @(0) @(1)); bool]) | []}
bind 5 x : {v : (AB int (T aFD)) | [(check v)]}
constraint:
env [1; 2; 3; 4; 5]
lhs {VV : (AB int (T aFD)) | [(VV = (if (is$A VV) then (A (selectA VV)) else (B (selectB VV))))]}
rhs {VV : (AB int (T aFD)) | [( 3 = (1 + 2) )]}
id 24 tag [4]
// META constraint id 24 : tests/pos/T2535.hs:11:1-9
// unless the sort of application is propagated in both the function and the argument
// as fixed in PR: https://github.com/ucsd-progsys/liquid-fixpoint/pull/753
// the above query crashes with
// Crash!: :1:1-1:1: Error
// crash: SMTLIB2 respSat = Error "line 3 column 13267: Sorts (AB Int (T Int)) and (AB Int Int) are incompatible"