Match_false

Match, incorrect version

function score(self: Ref) : Int function seq1start(self: Ref) : Int function seq2start(self: Ref) : Int define return(x) { assert !returned returned := true res := x } function sgn(i: Int) : Int ensures i > 0 ==> result == 1 ensures i == 0 ==> result == 0 ensures i < 0 ==> result == -1 method compare(o1: Ref, o2: Ref) returns (res: Int) requires rel(o1, 0) == rel(o1, 1) && rel(o2, 0) == rel(o1, 2) && rel(o2, 2) == rel(o2, 1) ensures (rel(res, 0) == 0) ==> (sgn(rel(res, 1)) == sgn(rel(res, 2))) // P3 { var returned : Bool returned := false if(score(o1) > score(o2)) { return(-1) }else{ if((score(o1) == score(o2)) && ((seq1start(o1) < seq1start(o2)) && (seq2start(o1) < seq2start(o2)))) { return(-1) }else{ if((score(o1) == score(o2)) && !((seq1start(o1) < seq1start(o2)) && (seq2start(o1) < seq2start(o2)))){ return(0) }else{ return(1) } } } assert returned }