Skip to content

Strictness-Quiz ignores "constructors" parameter, builds type-incorrect instances

Config 
  { size = 5
  , c_signature = Signature 
      { defined = listToFM [ ( g, 3 ), ( f, 2 ) ]
      , constructors = mkSet [ A,B,C] 
      }
  , variables = mkSet [ x, p, z, y, q ]
  , c_target = f
  , num_candidates = 400
  , c_max_steps = 40 
  }

example instance created from this config

For this set of declarations
{ f y q = 
    case y of 
      { False -> q; True -> g C y y }
; g y z x = 
    case x of 
      { False -> A; True -> A } 
}
Prove that function f is not strict:

Note: A,B,C used in expressions, but False, True used in patterns